Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将字段推送到多维关联数组的每个子数组的末尾_Php_Arrays_Codeigniter_Multidimensional Array - Fatal编程技术网

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

Php 将字段推送到多维关联数组的每个子数组的末尾,php,arrays,codeigniter,multidimensional-array,Php,Arrays,Codeigniter,Multidimensional Array,我有一个PHP多维关联数组,其结构如下: Array ( [0] => Array ( [serverid] => 1 [ip] => localhost [name] => Server1 ) [1] => Array ( [serverid] => 2 [ip] => localhost [name] => Server2

我有一个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
    )
现在,我需要在每个子数组的末尾推送这个新字段,并使用以下值:

['page_url'] = base_url('/server/id/') . $server['serverid'];
其中,
$server['serverid']
是相对于每个子阵列的serverid字段

我尝试过这个循环,但似乎不起作用:

$result = $query->result_array();
foreach($result as $server) {
        $server['page_url'] = base_url('/server/id/') . $server['id'];
}

如果您有任何建议,我们将不胜感激。

这将创建子阵列的临时副本,您将对其进行更改,然后在下一次迭代中将其丢弃:

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++) {
for($index=0;$index
这将创建子阵列的临时副本,您将对其进行更改,然后在下一次迭代中丢弃:

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++) {
for($index=0;$index
如果要在通过foreach中的数组进行迭代时修改子数组,则必须使用
&
将变量作为引用传递

如果您将代码更改为下面的代码,它应该可以工作,因为您将更改原始数组项而不是创建的副本

foreach($result as &$server) {
        $server['page_url'] = base_url('/server/id/') . $server['id'];
}

如果您想在通过foreach中的数组进行迭代时修改子数组,则必须使用
&
将变量作为引用传递

如果您将代码更改为下面的代码,它应该可以工作,因为您将更改原始数组项而不是创建的副本

foreach($result as &$server) {
        $server['page_url'] = base_url('/server/id/') . $server['id'];
}

在foreach add&beforövarname foreach($result as&$server)中修改{在foreach add&beforövarname foreach($result as&$server)中修改{很好的解决方案,我没有考虑到我在复制值而不是修改原始数组。很好的解决方案,我没有考虑到我在复制值而不是修改原始数组。