PHP多维数组编辑异常:为何修改后数组结构改变?
数组修改后结构异常的问题分析
初始数组结构
$array["rlist"]的初始输出结构为:
Array ( [0] => Array ( [0] => test1 ) [1] => Array ( [0] => test2 ) [2] => Array ( [0] => test3 ) [3] => Array ( [0] => test4 ) [4] => Array ( [0] => test5 ) )
执行的修改代码
使用以下代码编辑数组:
$array["rlist"][0][0] = 'test1'; $array["rlist"][0][1] = 'test2'; $array["rlist"][0][2] = 'test3'; $array["rlist"][0][3] = 'test4'; $array["rlist"][0][4] = 'test5';
修改后的结果
数组结构变为:
Array ( [0] => Array ( [0] => test1 [1] => test2 [2] => test3 [3] => test4 [4] => test5 ) )
问题
操作哪里出错了?
错误原因及修正方案
你的操作错误在于所有修改都针对初始数组的第一个子数组($array["rlist"][0]),而非逐个操作原数组里的每个子数组。
初始的$array["rlist"]是包含5个独立子数组的数组,每个子数组只有1个元素。你现在的代码是把所有值都添加到第一个子数组中,这会直接覆盖原数组索引1到4的子数组,最终只保留一个包含5个元素的子数组。
根据需求不同,有两种修正方式:
- 若要替换每个子数组的原有元素:
$array["rlist"][0][0] = 'new_test1'; $array["rlist"][1][0] = 'new_test2'; $array["rlist"][2][0] = 'new_test3'; $array["rlist"][3][0] = 'new_test4'; $array["rlist"][4][0] = 'new_test5';
- 若要给每个子数组新增元素:
$array["rlist"][0][1] = 'add_test1'; $array["rlist"][1][1] = 'add_test2'; $array["rlist"][2][1] = 'add_test3'; $array["rlist"][3][1] = 'add_test4'; $array["rlist"][4][1] = 'add_test5';
内容的提问来源于stack exchange,提问作者user614963
相关产品推荐
相关产品推荐

