0

2 つの変数があり、どちらも配列です。

$var1=array();

$var1['something']['secondary_something'][1]="foo";
$var1['something']['secondary_something'][2]="foo";
$var1['something']['secondary_something'][3]="foo";
$var1['something']['secondary_something'][4]="foo";

これで、入力に配列を受け取る関数ができました。

function something($input=array()){

print_r($input);//print the array out

}//end of function

しかし、私は$inputへの参照のようにする必要がある$var1ので、関数を呼び出すと、次のように変数 2 ( $input)に追加されます。

$myInputVar=array();
$myInputVar['something']['secondary_something'][]="foo";
$myInputVar['something']['secondary_something'][]="foo";
//Notice how I append to the var above, not giving a key name in the third dimension of the array.
something($myInputVar);

これで、次のように単純に出力されます。

Array ( [something] => Array ( [secondary_something] => Array ( [0] => foo [1] => foo ) ) )

しかし$input、最初の var ( ) の参照になるには、2 番目の var ( 、関数から) が必要$var1です。

したがって、最終結果は次のようになります。

Array ( [something] => Array ( [secondary_something] => Array ( [5] => foo [6] => foo ) ) )

を使用するように言われた人もいますが=&(これにより、ある変数が別の変数への参照になります)、この場合の使用方法がわかりません=&

私がやろうとしていることは可能ですか?もしそうなら、あなたはそれに光を当てることができますか?

4

3 に答える 3

0

関数に配列への参照を受け取らせることができます。そのようです:

function something(&$arr) {
    $arr['something']['secondary_something'][]="something1";
    $arr['something']['secondary_something'][]="something2";
}

これで、次のようなことができます。

$var1 = array();
$var1['something']['secondary_something'][1]="foo";
$var1['something']['secondary_something'][2]="bar";
$var1['something']['secondary_something'][3]="foobar";
$var1['something']['secondary_something'][4]="barfoo";
something($var1); //this should now append the items to $var1.
print_r($var1); //check to see if calling 'something' really did add the items.
于 2012-04-15T16:39:31.337 に答える
0

私はあなたが何を達成しようとしているのか理解するのに苦労しています。なぜ配列を印刷するのですか?何かを配列にプッシュする場合は、常に値と配列が必要です。
あなたはこれを行うことができます

function something(&$array, $val) { // take the assigned $array as reference
  $array[] = $val;
}

次に、

$test = array();
something($test, 'foo');
print_r($test); // => array ( 'test' )

これがお役に立てば幸いです


編集

function something(&$array, $array_new) {
   $array = array_merge($array, $array_new); // to combine/merge both arrays
   // please keep in mind that $array is technically $var, because it references to this variable
}

$var1=array();

$var1['something']['secondary_something'][1]="foo";
$var1['something']['secondary_something'][2]="foo";
$var1['something']['secondary_something'][3]="foo";
$var1['something']['secondary_something'][4]="foo";

$myInputVar=array();
$myInputVar['something']['secondary_something'][]="foo";
$myInputVar['something']['secondary_something'][]="foo";

something($var, $myInputVar);
于 2012-04-15T16:36:21.547 に答える
0

これを試して:

$var1 = array();
$var2 = array();

assign($var1, $var2, 'foo'); // add an item in both $var1 & $var2
assign($var1, $var2, 'bar'); // append another item it both $var1 & $var2
assign($var1, $var2, 'buz', 5); // add an item in both $var1 & $var2 at index 5

echo print_r($var1, TRUE) . print_r($var2, TRUE);

function assign(&$var1, &$var2, $value, $index=NULL) {
    if (is_int($index)) {
        $var1['something']['secondary_something'][$index] = $var2['something']['secondary_something'][$index] = $value;
    } else {
        $var1['something']['secondary_something'][] = $var2['something']['secondary_something'][] = $value;
    }
}

出力は次のとおりです。

Array ( [something] => Array ( [secondary_something] => Array ( [0] => foo [1] => bar [5] => buz ) ) ) Array ( [something] => Array ( [secondary_something] => Array ( [0] => foo [1] => bar [5] => buz ) ) ) 
于 2012-04-15T17:00:52.780 に答える