2017-12-24 10 views
1

すべての良い日!関数から配列へのPHPのプッシュ

他の配列で「グローバル」配列を埋める必要があります。一例として、私はこの関数を書いた:

<?php 
function f($ar=array(), $gl=array()){ 
    $gl[0]=array($ar[1]); 
} 
$globals=array(); 
$array_example=array('foo', 'bar'); 
f($array_example, $globals); 
print_r($globals); //$globals is empty! 
?> 

助けてください。私はなぜvar $グローバルが空であるのか理解できません。

ありがとうございます!

+0

関数f($のAR =配列()、&$ GL =配列())を助けることを願っています - ? –

+0

何をする必要がありますか? –

+0

$ globals配列に他の配列の値を入力する必要があります。 –

答えて

1

私はあなたが&を使用してアレイby referenceを渡すべきだと思う:

function f($ar = array(), &$gl = array()) 
{ 
    $gl[0] = array($ar[1]); 
} 

$globals = array(); 
$array_example = array('foo', 'bar'); 
f($array_example, $globals); 
print_r($globals); 

はあなたを与える:

Array 
(
    [0] => Array 
     (
      [0] => bar 
     ) 

) 

Demo

0

男を最初にあなたが値を返すようにfunctionを変更する必要がありますし、印刷される値の戻り値を代入します。 $globalを印刷していて、それは空のarrayです。 あなたのコードはこのようになります。

<?php 
    function f($ar = array(), $gl = array()){ 
     $gl[0] = array($ar[1]); 
     return $gl; 
    } 
    $globals=array(); 
    $array_example=array('foo', 'bar'); 

    $globals = f($array_example, $globals); 
    print_r($globals); 

    // prints out Array ([0] => Array ([0] => bar)) 
?> 
+0

No sir。しかし、各関数呼び出しは新しい値で配列を埋めます。 –

0

関数は常にローカル変数で機能し、ローカル変数スコープを関数外で使用する必要があります。コードの下で チェックは、私はそれはあなた

function f($ar=array(), $gl=array()){ 
    return array($ar[1]); 
} 
$globals=array(); 
$array_example=array('foo', 'bar'); 
$tmpArray = f($array_example, $globals); 
$globals[0]=$tmpArray; 
print_r($globals); 
+0

ありがとうございます:)しかし、$グローバルの各イベント新しいインデックスは不明です。 –

+0

お手数ですが....説明していただけますか? –

+0

$ array_exampleはMySQLからループ内のデータを取得しています –

関連する問題