如果我可以信任你輸入數組的結構模式,我可以爲你提供圓滑的一行(沒有用於/ while循環)...
$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);
輸出:
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',
),
)
下面是使用我array_map()功能的故障:
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
);
後期編輯(我想我在這也提供了相同的輸出下降一個可變參數函數):
array_map(function($K,$B,$S)use(&$output){$output[$K]=["Buy"=>$B,"Sell"=>$S];},...array_chunk($input,3));
巧合的是,無論是一個班輪方法有確切相同的字符長度,所以它歸結爲個人喜好,我想。
你需要遍歷它並創建所需的結構,沒有準備好的功能。 –
@frozenade,您的問題得到解答,請您將一個答案標記爲[接受](http://stackoverflow.com/help/accepted-answer)? –