如果结果数组中还没有元素,则将元素推入结果数组中

问题描述 投票:0回答:2

我想将旧数组中的值推送到新数组。当推送时我正在检查对象值是否已经存在。仅当新数组中不存在相同的对象值时才应推送该值。这是我的代码。

$sorted_array = array();
foreach ($data as $nkey => $value) {
    if (count($sorted_array) > 0) {
        dd($sorted_array[$nkey]);
        if ($sorted_array[$nkey]['store'] != $value['store']) {
            array_push($sorted_array, $value);
        }
    } else{
        array_push($sorted_array, $value);
    }
}
php arrays laravel filter duplicates
2个回答
1
投票

如果我理解正确的话,你可以使用

in_array
函数轻松处理它:

$sorted_array = array();

foreach ($data as $nkey => $value) {
        if ( !in_array($value, $sorted_array) ) {
            array_push($sorted_array, $value);
        }
}

in_array
函数返回布尔值。在我的代码中,如果
$value
参数不在
$sorted_array
中,那么它将被推送。否则不执行操作。


0
投票

array_push()
在这种情况下是错误的。 试试这个代码:

foreach ($data as $nkey => $value) {
    if (count($sorted_array) > 0) {
        if ($sorted_array[$nkey]['store'] != $value['store']) {
            $sorted_array[$nkey] = $value;
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.