加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP在没有通知的情况下为多维数组添加新索引

发布时间:2020-12-13 22:54:51 所属栏目:PHP教程 来源:网络整理
导读:举个例子: $data = array();$data['a']['one'] = 'test'; 这将发出通知,因为$data [‘a’]不存在.所以相反,我总是这样做: $data = array();$data['a'] = array();$data['a']['one'] = 'test'; 或者,如果我在循环中,这样的事情: $data = array();foreach (
举个例子:

$data = array();
$data['a']['one'] = 'test';

这将发出通知,因为$data [‘a’]不存在.所以相反,我总是这样做:

$data = array();
$data['a'] = array();
$data['a']['one'] = 'test';

或者,如果我在循环中,这样的事情:

$data = array();
foreach ($items as $item) {
    if (!isset($data['a'])) {
        $data['a'] = array();
    }
    $data['a']['one'] = $item->getId();
}

这在代码中变得非常敏感并且凌乱.我知道我可以写一些array_push替代函数来处理这个,但我想知道是否有办法用现有的PHP方法做到这一点.

解决方法

首先在某处初始化整个阵列(所有键,子阵列等)是不切实际的.

这意味着记住并维护它 – 当您有以前没有考虑过的新数据时,您还必须将其添加到阵列初始化中.
(Urgh)

我至少将var作为一个数组($data = array();),然后你不需要is_array() – 这是一个令人讨厌的单行代码,甚至你做任何有用的事情(两行包括右括号). ).

但是,不需要您的检查.
您的代码检查是否已设置数组的子数组,如果没有,则将其设置为数组,然后将数据设置到其上.

这不是必需的,因为即使先前未设置某些子键/数组,您也可以在数组中设置数据.

例如,此代码(这是整个文件和所有运行的代码)不会抛出错误,警告或通知:

$data['a']['one']['blah']['foo'] = 'test';

print_r($data);

echo $data['a']['one']['blah']['foo'];

以上输出:

数组([a] =>数组([one] =>数组([blah] =>数组([foo] => test))))

测试

上述代码不会返回任何警告/通知/错误.
另请注意,我甚至没有$data = array().
(虽然你想,因为你可能使用foreach并且初始化否定了使用is_array的需要).

这是与error_reporting(-1);

TL; DR; – 答案

因此,要回答您的问题,您可以在代码中执行此操作(并且不会收到任何错误/通知/警告):

$data = array();

// more data setting the array up  

foreach ($items as $item) {
    $data['a']['one'] = $item->getId();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读