Wenn ich dem strukturelle Muster Ihres Eingabe-Array vertrauen kann, ich einen schlanken Einzeiler (ohne für/While-Schleifen) für Sie zur Verfügung stellen kann ...
$input=array(
12 => "USD",
13 => "10150.00",
14 => "9850.00",
15 => "SGD",
16 => "8015.40",
17 => "7915.40",
18 => "HKD",
19 => "1304.60",
20 => "1288.60"
);
array_map(function($a)use(&$output){$output[$a[0]]=["Buy"=>$a[1],"Sell"=>$a[2]];},array_chunk($input,3));
var_export($output);
Ausgang:
array (
'USD' =>
array (
'Buy' => '10150.00',
'Sell' => '9850.00',
),
'SGD' =>
array (
'Buy' => '8015.40',
'Sell' => '7915.40',
),
'HKD' =>
array (
'Buy' => '1304.60',
'Sell' => '1288.60',
),
)
Hier ist die Aufschlüsselung meiner array_map() Funktion array_chunk():
array_map( // iterate each subarray from array_chunk()
function($a) // $a = each subarray
use(&$output){ // declare the output array as modifiable
$output[$a[0]]= // use 1st subarray value as key
["Buy"=>$a[1], // use 2nd subarray value as Buy value
"Sell"=>$a[2]]; // use 3rd subarray value as Sell value
},
array_chunk($input,3) // feed in an array of 3-element subarrays
);
Späte Edit (ich dachte, dass ich in das bietet auch die gleiche Leistung eine variadische Drop-Funktion würde):
array_map(function($K,$B,$S)use(&$output){$output[$K]=["Buy"=>$B,"Sell"=>$S];},...array_chunk($input,3));
Zufälligerweise beide Einzeiler Methoden die genaue haben gleiche Zeichenlänge, so kommt es auf die persönliche Präferenz an, nehme ich an.
Sie müssen darüber iterieren und gewünschte Struktur erstellen, es gibt keine fertige Funktion dafür. –
@frozenade, Ihre Frage wird beantwortet, können Sie bitte eine Antwort als [akzeptiert] markieren (http://stackoverflow.com/help/accepted-answer)? –