PHP在没有通知的情况下为多维数组添加新索引
举个例子:
$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方法做到这一点. 解决方法
首先在某处初始化整个阵列(所有键,子阵列等)是不切实际的.
这意味着记住并维护它 – 当您有以前没有考虑过的新数据时,您还必须将其添加到阵列初始化中. 我至少将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)))) 测试 上述代码不会返回任何警告/通知/错误. 这是与error_reporting(-1); TL; DR; – 答案 因此,要回答您的问题,您可以在代码中执行此操作(并且不会收到任何错误/通知/警告): $data = array(); // more data setting the array up foreach ($items as $item) { $data['a']['one'] = $item->getId(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |