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

时间:2014-08-25 15:45:40

标签: php arrays

我在一个数组中查询了一个表,但是我希望从其中一个列中排除某些值以吐出每一行。例如。

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中排除唯一值,所以我想如果有一种简单的方法可以将我要排除的所有值排除在一个非常棒的数组中。

4 个答案:

答案 0 :(得分:1)

您可以使用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');

答案 1 :(得分:0)

使用in_array

$skuarray = array("sku-2", "sku-4");

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

答案 2 :(得分:0)

foreach($results as $row)
{
         if(!array_key_exists($row['sku'], $skuarray)) {
             echo $row['sku']." ";
         }
}

答案 3 :(得分:0)

您可以将array_filterin_array结合使用。

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