我有一个以多种方式构建的PHP多维关联数组:
Array
(
[0] => Array
(
[serverid] => 1
[ip] => localhost
[name] => Server1
)
[1] => Array
(
[serverid] => 2
[ip] => localhost
[name] => Server2
)
[2] => Array
(
[serverid] => 3
[ip] => localhost
[name] => Server3
)
现在我需要在每个subArray的末尾用这个值推送这个新字段:
['page_url'] = base_url('/server/id/') . $server['serverid'];
$server['serverid']
是相对于每个subArray的 serverid 字段。
我已尝试过这个循环,但似乎不起作用:
$result = $query->result_array();
foreach($result as $server) {
$server['page_url'] = base_url('/server/id/') . $server['id'];
}
任何建议都会非常感激。
答案 0 :(得分:2)
如果要在foreach中通过数组进行迭代时修改子数组,则必须使用&
将变量作为引用传递。
如果您将代码更改为下面的代码,它应该可以正常工作,因为您将更改原始数组项而不是创建的副本。
foreach($result as &$server) {
$server['page_url'] = base_url('/server/id/') . $server['id'];
}
答案 1 :(得分:1)
这会创建一个子阵列的临时副本,您可以在下一次迭代中进行更改然后丢弃:
foreach ($result as $server) {
$server['page_url'] = base_url('/server/id/') . $server['id'];
}
您想要更改原始数组。像这样:
foreach (array_keys($result) as $index) {
$result[$index]['page_url'] = base_url('/server/id/') . $result[$index]['id'];
}
如果您知道自己没有使用$result
中的索引,那么您也可以这样做:
for ($index = 0; $index < count($result); $index++) {