2012-04-15 12 views
0

I zwei Variablen haben, die beide Arrays sind:auf Array A mit B Array anhängt (wobei ein Verweis auf Array A ??)

$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"; 

Jetzt habe ich eine Funktion, die eine Anordnung für die Eingabe erfolgt:

function something($input=array()){ 

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

}//end of function 

Aber ich brauche $input-$var1 wie eine Referenz zu sein, so dass, wenn rufe ich die Funktion, zu variablen Anhängen 2 ($input) wie folgt aus:

$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); 

Nun, da würde einfach Druck:

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

Aber ich brauche die zweite var ($input, von der Funktion) ein Verweis des ersten var zu sein ($var1).

So sollte das Endergebnis sein:

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

Einige Jungs haben mir gesagt, die =& zu verwenden (was eine var ein Verweis auf eine andere macht), aber ich kann einfach nicht mein Kopf scheint zu bekommen herum, wie ich es in diesem Fall mit =& tun würde.

Ist was ich versuche zu tun, sogar möglich? Wenn ja, könnten Sie bitte etwas Licht darauf werfen.

Antwort

0

Ich habe Mühe zu verstehen, was Sie erreichen wollen. Warum würden Sie das Array ausdrucken? Sie benötigen immer einen Wert und ein Array, wenn Sie etwas in das Array schieben möchten.
Sie können dies tun, mit

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

Dann

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

mit Aufruf Ich hoffe, das


EDIT

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); 
+0

Ja, es war ziemlich schwer zu erklären. Aber ich glaube, du hast es falsch verstanden (sorry). Die 'print_r' ist nur als Beispiel da. Ich versuche '$ var1' zu verwenden, um an' $ var2' anzuhängen ... also wenn ich '$ var2 [] =" someing "' würde, würde das stattdessen an '$ var1' angehängt. mach jetzt mehr Sinn? Nochmals Entschuldigung für die seltsame Erklärung ... –

+0

Ich hoffe ich habe es jetzt verstanden, siehe meine Bearbeitung :) –

0
hilft

Sie können die Funktion veranlassen, eine Referenz auf das Array zu erhalten. Wie so:

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

Jetzt sind Sie so etwas wie die folgenden Aktionen durchführen:

$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. 
0

Try this:

$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; 
    } 
} 

die Ausgabe wird:

Array ([something] => Array ([secondary_something] => Array ([0] => foo [1] => bar [5] => buz))) Array ([something] => Array ([secondary_something] => Array ([0] => foo [1] => bar [5] => buz))) 
Verwandte Themen