0

私の問題は次のとおりです。私は多次元配列を持っています。配列を宣言します。次に、配列を部分的に設定するコードを実行します。次に、関数内から配列内のいくつかの項目を変更することになっている関数を実行します。残念ながら、これは機能していません。だから私の質問は簡単です。それは正常ですか?はいの場合、どうすればこれを克服できますか。返信ありがとうございます。乾杯。マーク。

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



my_function();
print_r($list); 

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

4 に答える 4

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();
于 2012-04-14T17:21:59.170 に答える
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;
}
于 2012-04-14T17:20:19.643 に答える
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';
}
于 2012-04-14T17:21:49.287 に答える
0

内部配列インデックスに ' を追加します

 array(
                         'name'=>'James' 
                         'group'=>''
      )
于 2012-04-14T17:20:17.550 に答える