我将一个表查询到一个数组中,但我希望从其中一个列中排除某些值,以便将每一行都排出来。例如。
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列中排除唯一的值,所以我想,如果有一种简单的方法,只需将所有想要排除的值放入一个很棒的数组中。
发布于 2014-08-25 15:50:07
使用in_array
$skuarray = array("sku-2", "sku-4");
foreach($results as $row)
{
if(!in_array($row['sku'], $skuarray)){
echo $row['sku']." ";
}
}发布于 2014-08-25 15:53:57
您可以使用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');发布于 2014-08-25 15:53:14
您可以结合使用array_filter和in_array。
$filtered_results = array_filter($results, function ($row) {
return in_array($row["sku"], $skuarray) === false;
});https://stackoverflow.com/questions/25489632
复制相似问题