我需要识别一个数组(指针)中的值出现在另一个数组(草堆)中的每个实例。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 . ";";
        }
    }
}

这会在每次循环完成时在屏幕上打印结果。这就是你的意思吗?

10-02 20:56