通过删除PHP中的重复项和空值来合并单个数组中的数组值

时间:2014-08-22 16:53:59

标签: php arrays

我有一个这样的数组:

Array
(
    [0] => Array
        (
             [0] => Array
                (
                    [id] => 1234
                    [name] => John
                )

             [1] => Array
                (

                )
        )

    [1] => Array
        (
            [0] => Array
                (
                    [id] => 1234
                    [name] => John
                )

            [1] => Array
                (
                    [id] => 5678
                    [name] => Sally
                )
            [2] => Array
                (
                    [id] => 1234
                    [name] => Duke
                )
)

我的结果数组应该如下(基本上合并并删除重复项并删除空值):

Array
(
    [0] => Array
        (
           [id] => 1234
           [name] => John
        )

    [1] => Array
        (
           [id] => 5678
           [name] => Sally
        )
    [2] => Array
        (
           [id] => 1234
           [name] => Duke
        )
)

使用PHP的数组函数有一种简单的方法吗?

编辑:到目前为止我有这个:

$result = array();
      foreach ($array as $key => $value) {
        if (is_array($value)) {
          $result = array_merge($result, $value);
        }
      }
print_r($result);

2 个答案:

答案 0 :(得分:1)

使用array_merge合并数组。然后使用array_unique删除重复项。最后,要删除null键,请使用循环。

foreach($array as $key=>$value)
{
    if(is_null($value) || $value == '')
        unset($array[$key]);
}

可以找到有关这些方法的文档here

答案 1 :(得分:0)

  1. 通过将子数组解包到合并调用中,平铺不必要的深度数组结构。
  2. 使用array_filter()过滤出空的子数组。
  3. 使用array_unique()删除重复的子数组。 (SORT_REGULAR阻止了“警告:数组到字符串的转换”)

代码:(Demo

var_export(
    array_unique(
        array_filter(
            array_merge(...$array)
        ),
        SORT_REGULAR
    )
);
  1. (可选)在结果数组上调用array_values()以对其重新索引(删除旧键)。