当您给数组赋值但索引为空时会发生什么?

时间:2019-02-13 19:59:52

标签: php

我当时正在用php进行深层次的实现,我无法掌握第六行使用的语法。

1    function deepFlatten($items)
2    {
3        $result = [];
4        foreach ($items as $item) {
5            if (!is_array($item)) {
6                $result[] = $item;
7            } else {
8                $result = array_merge($result, deepFlatten($item));
9            }
10       }
11       return $result;
12   }

1 个答案:

答案 0 :(得分:-1)

它只是将一个项目添加(“推”)到数组的末尾。类似于使用array_push

因此,$result[] = $item;使数组$result扩展了一个额外的项目。尽管搜索" [] "并不总是那么简单,但实际上documentation on arrays on PHP.net中也描述了这种语法。

deepFlatten函数是遍历数组的递归函数。如果要调查的项本身是一个数组,则递归调用deepFlatten以返回该子数组的展平版本,然后将其合并到结果中。

由于使用的是普通推(用于简单项目)或array_merge(用于添加递归调用的数组结果),因此,如果使用array_push,则该函数的可读性可能会更高,尽管效果是相同的:

function deepFlatten($items)
{
    $result = [];
    foreach ($items as $item) {
        if (!is_array($item)) {
            array_push($result, $item);
        } else {
            $result = array_merge($result, deepFlatten($item));
        }
    }
    return $result;
}