在嵌套的Php数组中设置值

时间:2010-01-06 21:42:16

标签: php

您好我正在尝试遍历数组并设置键值。非常基本的问题。

我尝试的守则如下。

http://pastebin.com/d3ddab156

<?php
$testArray = array("bob1" => array( 'name' => "bob1", 'setTest' => '2'));

foreach($testArray as $item)
{
    $item['setTest'] = 'bob';
} 

print_r($testArray);

我想我在这里错过了一些愚蠢的东西,这将是一个D'哦!对我而言。这有什么问题?

感谢。

2 个答案:

答案 0 :(得分:3)

你这样做:

$testArray = array("bob1" => array( 'name' => "bob1", 'setTest' => '2'));    

foreach($testArray as $item)
{
    $item['setTest'] = 'bob';
} 

print_r($testArray);

$ item是一个副本。您更改副本,而不是真正的数组。试试这个:

$testArray = array("bob1" => array( 'name' => "bob1", 'setTest' => '2'));    

foreach($testArray as $key => $item)
{
    $testArray[$key]['setTest'] = 'bob';
} 

print_r($testArray);

答案 1 :(得分:1)

或者,如果数组中有大量数据并且希望避免在每次迭代中创建每个元素的完整副本,则只需遍历每个元素作为参考。然后在内存中只创建对该项的引用,您可以使用$ item:

直接操作数组元素
$testArray = array("bob1" => array( 'name' => "bob1", 'setTest' => '2'));    

foreach($testArray as &$item)
{
    $item['setTest'] = 'bob';
} 

print_r($testArray);

注意:请确保在循环后取消设置$ item,以便稍后使用该变量名称无意中修改数组。