【问题标题】:Unique values of a multidimensional array while inside a foreach loop在 foreach 循环内多维数组的唯一值
【发布时间】:2014-04-14 00:45:11
【问题描述】:

我在 foreach 循环中工作,我的代码部分如下所示:

foreach ($query->rows as $row) {

  $myarray = explode(",",$row['text']);

  print_r($myarray);

}

上面的输出结果是这样的:

Array
(
    [0] = Charcoal
    [1] = Natural Gas
    [2] = Combo
)
Array
(
    [0] = Charcoal
    [1] = Propane
    [2] = Combo
)
Array
(
    [0] = Charcoal
    [1] = Propane
    [2] = Natural Gas
    [3] = Combo
)
Array
(
    [0] = coal
)
Array
(
    [0] = Natural Gas
    [1] = Wood
)

是的,我看到有类似的问题。但他们的答案似乎都不适合我。我想这可能是因为我在 foreach 循环中工作。不管怎样,我想知道是否有办法让上面的输出看起来像这样:

Array
(
    [0] = Charcoal
    [1] = Natural Gas
    [2] = Combo
)
Array
(
    [0] = Propane
)
Array
(
    [0] = Coal
)
Array
(
    [0] = wood
)

所有重复项都消失了,而不会丢失此数组的格式。我尝试过的代码..但“也许”错误的是:

$input = array_map("unserialize", array_unique(array_map("serialize", $input)));

为Sharanya Dutta 编辑:

我还有很多其他代码,但基本上这是我尝试使用它的地方。

$arr = array();

foreach($query->rows as $row){
    $_arr = explode(",", $row["text"]);
    $diff = array_values(array_diff($_arr, $arr));
    if($diff !== array()) print_r($diff);
    $arr = array_merge($arr, $_arr);
    $output[$row['attribute_id']]['values'][] = $diff; // <--- USE IT HERE
}

【问题讨论】:

    标签: php arrays multidimensional-array foreach


    【解决方案1】:

    使用数组(以下代码中的$arr)存储值,print_r 仅存储与已存储值不同的值:

    $arr = array();
    
    foreach($query->rows as $row){
        $_arr = explode(",", $row["text"]);
        $diff = array_values(array_diff($_arr, $arr));
        if($diff !== array()) print_r($diff);
        $arr = array_merge($arr, $_arr);
    }
    

    DEMO


    您甚至可以在foreach 循环的最后一行之后使用$diff

    $arr = array();
    
    foreach($query->rows as $row){
        $_arr = explode(",", $row["text"]);
        $diff = array_values(array_diff($_arr, $arr));
        $arr = array_merge($arr, $_arr);
        if($diff !== array()) print_r($diff);
    }
    

    DEMO

    【讨论】:

    • 这似乎工作得很好,但是我如何使用最后一行下方但仍在foreach中的数组?
    • 这取决于您实际需要对数组做什么。
    • 我刚刚对我的问题进行了编辑,并附上了我想要做什么的代码。
    • 我看过编辑。这是一段应该可以完美运行的有效代码。您现在面临什么问题?
    • 每当我使用$diff 这一行下方$arr = array_merge($arr, $_arr); 时,我都会得到一个完全不同的输出数组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2018-07-13
    • 2022-12-01
    • 2011-08-30
    相关资源
    最近更新 更多