簡體   English   中英

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']." ";
         }
}
foreach($results as $row)
{
         if(!array_key_exists($row['sku'], $skuarray)) {
             echo $row['sku']." ";
         }
}

您可以將array_filterin_array結合使用。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM