【问题标题】:PHP for each result excluding values from array每个结果的 PHP 不包括数组中的值
【发布时间】:2014-08-25 15:45:39
【问题描述】:

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

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 中排除唯一值,所以我想是否有一种简单的方法可以将我想要排除的所有值放入一个很棒的数组中。

【问题讨论】:

  • 可以直接在查询中排除不需要的值吗?
  • 也许in_array()

标签: php arrays


【解决方案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');

【讨论】:

    【解决方案2】:

    使用in_array:

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

    【讨论】:

    • 我想我可以将我的"Maybe" 更改为“使用”哈哈
    【解决方案3】:

    您可以将array_filterin_array 结合使用。

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

    【讨论】:

      猜你喜欢
      • 2018-03-01
      • 2017-11-26
      • 2019-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-23
      • 2016-12-22
      • 2021-06-17
      相关资源
      最近更新 更多