2017-05-01 3 views
0

Wie kann ich Eingabearrayeinige Array in cakephp kombinieren

$input['id'] = [1,2,3,4]; 
$input['name'] = ['a' , 'b' , 'c']; 
$input['alias'] = ['i' , 'ii' , 'iii' , 'iv' , 'v']; 
$input['object'] = [$object1 , $object2]; 

zur Ausgabe Array

$output[] = ['id'=>1 , 'name'=>'a' , 'alias'=>'i' , 'object'=>$object1]; 
$output[] = ['id'=>2 , 'name'=>'b' , 'alias'=>'ii' , 'object'=>$object2]; 
$output[] = ['id'=>3 , 'name'=>'c' , 'alias'=>'iii' , 'object'=>NULL]; 
$output[] = ['id'=>4 , 'name'=>'' , 'alias'=>'iv' , 'object'=>NULL]; 
$output[] = ['id'=>0 , 'name'=>'' , 'alias'=>'v' , 'object'=>NULL]; 

verpassten Nummer = 0
verpasst string = ''
verpassten Objekt = null

konvertieren
+0

Haben Sie bei dem [zip] sehen (https://book.cakephp.org/3.0/en/core-libraries/collections.html#Cake\Collection \ Collection :: zip) -Funktion der Collections-Bibliothek? –

Antwort

0

Als erste Antwort würde ich folgendes tun:

$output = array_map(null, $input['id'], $input['name'], $input['alias'], $input['object']);

Dies wird ein Array aus Ihren Arrays erstellen.

Gegenstück dieser Lösung ist, dass es immer null zurückgibt, wenn Wert nicht festgelegt ist.

Weitere Informationen: http://php.net/manual/en/function.array-map.php#example-5583


EDIT 3. Mai 2017 Wenn Sie die Schlüssel zum Ausgang (id, name, alias, Objekt) hinzufügen, können Sie eine Funktion auf jedes Element anwenden im Stapel, um sie hinzuzufügen. Das Folgende ist eine mögliche Lösung:

array_walk($output, function(&$item, $key) { $item = array_combine(['id','name','alias', 'object'], array_values($item)); });

+1

danke aber es produziert <<< $ output [] = [0 => 1, 1 => 'a', 2 => 'i', 3 => $ object1]; >>> statt <<< $ output [] = ['id' => 1, 'name' => 'a', 'alias' => 'i', 'objekt' => $ objekt1]; >>> –

+0

Sie sind völlig richtig! Ich habe meinen Beitrag bearbeitet, um die Lösung zu verbessern. Prost! – Guillaume