将字段推送到多维关联数组的每个subArray的末尾

时间:2018-01-06 16:52:40

标签: php arrays codeigniter multidimensional-array

我有一个以多种方式构建的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'];
}

任何建议都会非常感激。

2 个答案:

答案 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++) {