我需要识别一个数组(指针)中的值出现在另一个数组(草堆)中的每个实例。in_array()
似乎是我最好的选择,下面的代码工作得很好,直到我需要在从数据库获取的行上使用它-它一直在追加值,而不是每次调用时都设置值。
虽然在这种情况下我实际上无法使用unset()
,但我惊讶地发现,即使这样似乎也无法解决问题。
更新-返回的内容示例
我临时更改了db值,使$niees每行只有一个值(以便能够对填充我屏幕的值进行排序;-)
错误的;
假;假;真;
假;假;真;假;真;
假;假;真;假;真;假;真;
假;假;真;假;真;假;真;假;
这工作正常
(我已经发布了一个功能示例here)
$needles = array('John', 'Alex');
$haystack = array('John','Alexander','Kim', 'Michael');
foreach ($needles as $needle) {
if (in_array($needle, $haystack) ) {
$Match = 'True';
}
else {
$Match = 'False';
}
}
这会一直附加值-编辑以反映我正在使用的代码
$Customer_Categories_Arr = array('Casual','Trendy');
if ($stmt->columnCount()) {
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$Product_Categories_Arr[]=$row["Taste_Category"];
// Use when column contains CSV
// $Product_Categories_Arrx = explode(',', trim($Product_Categories_Arr[0]));
foreach ($Product_Categories_Arr as $Product_Category_Arr) {
if (in_array($Product_Category_Arr, $Customer_Categories_Arr)){
$Matches_Product_Category = "True";
} else {
$Matches_Product_Category = "False";
}
echo $Product_Category_Arr, ', ', $Matches_Product_Category, '; ';
}
}
}
最佳答案
你到底想干什么还不清楚。但也许这会有帮助:
$customerCategories = array('Casual', 'Trendy');
if( $stmt->columnCount() ){
while( $row = $stmt->fetch( PDO::FETCH_ASSOC )){
$productCategoryRow = $row[ 'Taste_Category' ];
// If it is not working, try uncommenting the next line
// $productCategories = [];
$productCategories = explode( ',', trim( $productCategoryRow ));
$match = "False";
foreach( $productCategories as $productCategory ){
if( in_array( $productCategory, $customerCategories )){
$match = "True";
}
echo $match . ";";
}
}
}
这会在每次循环完成时在屏幕上打印结果。这就是你的意思吗?