PHP的每个结果,不包括数组中的值


PHP for each result excluding values from array

我将一个表查询到一个数组,但是我想从其中一列中排除某些值,以便吐出每一行。例如,

foreach($results as $row)
{
         if($row['sku'] != "sku-1"){
             echo $row['sku']." ";
         }
}

假设表有4行,值为sku-1、sku-2、sku-3和sku-4。上面的Foreach代码将返回"sku-2 sku-3 sku-4"。有没有一种方法可以让我想要排除的值的数组?比如我有一个数组$skuarray = "sku-2, sku-4"而不是

if($row['sku'] != "sku-2" || $row['sku'] != "sku-4"){

有$skuarray在那里,它会返回"sku-1, sku-3"?谢谢!

编辑

我可以在查询时排除它。我从表SKUTABLE中查询,列是SKU。问题是我需要从列SKU中排除唯一值,所以我认为如果有一种简单的方法可以将所有我想要排除的值放入数组中,那就太好了。

您可以使用array_diff(array1, array2, [...arrayN])函数,它接受至少两个数组,并返回一个数组,该数组仅包含array1中不在任何后续数组中的那些值。例子:

$input = array(0=>'sku-1',1=>'sku-2',2=>'sku-3',3=>'sku-4');
$exclude = array('sku-1','sku-3','sku-4');
$result = array_diff($input, $exclude);
print_r($result);

将打印

array(1=>'sku-2');

使用in_array:

$skuarray = array("sku-2", "sku-4");
foreach($results as $row)
{
         if(!in_array($row['sku'], $skuarray)){
             echo $row['sku']." ";
         }
}

可以将array_filterin_array结合使用。

$filtered_results = array_filter($results, function ($row) {
    return in_array($row["sku"], $skuarray) === false;
});