2016-06-08 13 views
-2

Ich habe Code wie diesesZusammenführen von zwei Arrays mit dem Index in PHP

foreach($tests as $test){ 
     if($test=='true') { 
       $temp[]['name']='a'; 
       $temp[]['child']='b'; 
      } 
      else{ 
       $temp[]['name']='c'; 
       $temp[]['child']='d'; 
      } 
     } 
prtint_r($temp); 

Ergebnis ist:

[{ "name": "c"}, { "Kind": "d" }, {"Name": "c"}, {"Kind": "d"}, {"Name": "a"}, {"Kind": "b"}, {"Name": "c" }, { "Kind": "d"}]

Aber ich möchte dieses Ergebnis:

[[{Name}: "c"}, {"Kind": "d"}], [{"Name": "c"}, {"Kind": "d"}], [{" name ":" a "}, {" Kind ":" b "}] [{" name ":" c "}, {" Kind ":" d "}]]

+0

poste dein Array '$ tests' ... –

+0

Ich bearbeite meinen Post .. – paranoid

Antwort

3

hinzufügen Array anstelle der beiden Elemente auf einmal

foreach($tests as $test){ 
    if($test=='true') { 
      $temp[] = ['name'=>'a', 'child'='b']; 
     } 
     else{ 
      $temp[] = ['name' => 'c', 'child'='d']; 
     } 
    } 
prtint_r($temp); 
1

Es ist ruhig einfach jedes Mal, php liest $array[] es als neues Array-Schlüssel liest,

$array[] = 1; //Key 0 
$array[] = 2; //Key 1 
$array[] = 3; //Key 2 
$array[] = 4; //Key 3 

zuweisen/den Schlüssel steuern Sie mehrere Methoden verwenden können, eine der einfacheren sind wie so.

$i = 0; 
foreach($array as $value){ 
    $array[$i]['name'] = 'Jamie'; 
    $array[$i]['age'] = 1; 

    $i++; 
} 

Jedes Mal, wenn die Schleife das foreach $i Variable läuft wird das Array einen neuen Schlüssel bei jedem Durchlauf durch erhöhen und zuweisen.

Ergebnis:

Array 
(
    [0] => Array(
     [name] => Jamie 
     [age] => 1 
    ) 
    [1] => Array(
     [name] => Jamie 
     [age] => 1 
    ) 
) 
2

Wiederverwendung Ihre $tests Schlüssel gleichen Schlüssel zu erhalten, wenn assign Wert ...

foreach($tests as $k=>$test){ 
    if($test=='true') { 
      $temp[$k]['name']='a'; 
      $temp[$k]['child']='b'; 
     } 
     else{ 
      $temp[$k]['name']='c'; 
      $temp[$k]['child']='d'; 
     } 
    } 
    var_dump($temp); 
1
$i = 0; 
foreach ($tests as $test) { 
    if ($test == 'true') { 
    $temp[$i] = array('name' => 'a', 'child'='b'); 
    } else { 
    $temp[$i] = array('name' => 'c', 'child'='d'); 
    } 
    $i++; 
} 
prtint_r($temp);