PHP - 如何从函数内修改多维数组项?

时间:2012-04-14 17:17:27

标签: php arrays

我的问题如下。我有一个多维数组。我宣布我的阵列。然后,我运行一些部分填充我的数组的代码。然后我运行一个函数,其中包括修改我的数组中的一些项目。遗憾的是,这不起作用。所以我的问题很简单。这是正常的吗?如果是的话,我怎么能克服这一点。非常感谢您的回复。干杯。马克。

$list = array([0]=>
                   array(
                         [name]=>'James' 
                         [group]=>''
                         )
             ); 



my_function();
print_r($list); 

function my_function(){
     //some code here
     $list[0]['group'] = 'groupA';
}

4 个答案:

答案 0 :(得分:2)

您可以将数组传递给参考

my_function(&$list) {

    $list[0]['group'] = 'groupA';
}

$list = /*...*/
my_function($list);

或只是从函数

返回数组
my_function($list) {

    $list[0]['group'] = 'groupA';
    return $list;
}

$list = /*...*/
$list = my_function($list);

或使用全球

my_function() {

    global $list;
    $list[0]['group'] = 'groupA';
}

$list = /*...*/
my_function();

答案 1 :(得分:1)

这样的事情:

$list = array( 0 =>
                   array(
                         'name'=>'James' 
                         'group'=>''
                         )
             ); 



my_function($list);
print_r($list); 

function my_function(&$list){
     //some code here
     $list[0]['group'] = 'groupA';
}

或者:

$list = array(0 =>
                   array(
                         'name'=>'James' 
                         'group'=>''
                         )
             ); 



$list = my_function($list);
print_r($list); 

function my_function($list){
     //some code here
     $list[0]['group'] = 'groupA';
     return $list;
}

答案 2 :(得分:1)

在您的情况下,数组不会更改,因为它在全局范围内,与其他语言不同,PHP不提供从函数内自动访问全局范围。所以你必须这样做:

function my_function(){
     global $list;
     //some code here
     $list[0]['group'] = 'groupA';
}

但更好的是,通过引用函数

将数组作为参数传递
function my_function(&$list){
     //some code here
     $list[0]['group'] = 'groupA';
}

答案 3 :(得分:0)

在内部数组索引中添加'

 array(
                         'name'=>'James' 
                         'group'=>''
      )