私は使用しています
foreach ($objs as $obj) {
$data[] = $obj->getValue;
}
返す可能性のあるメソッドから値を収集する
array[4]{
[0]=>
string(2) "1234"
[1]=>
string(7) "5678"
[2]=>
string(7) "9ab"
[3]=>
string(10) "cdefg"
...
}
しかし、そのデータが次のような多次元連想配列形式で必要です...
array[2]{
[0] =>
array[2]{
["alpha"]=>
string(2) "1234"
["beta"]=>
string(7) "5678"
}
[1] =>
array[2]{
["alpha"]=>
string(7) "9ab"
["beta"]=>
string(10) "cdefg"
}
2 つの独立したループでこれを行うことができました。1 つはメソッド データを 2 次元配列にループし、もう 1 つはその配列をループしてインデックス値を手動で連想値に変更します。
$key_labels = array('alpha','beta');
$row_num = $col_num = 0;
$rows = array(
array(),
array()
);
/* Parse the query into a two-dimensional array */
foreach ($objs as $obj) {
$rows[$row_num][$col_num++] = $obj->nodeValue;
if ($col_num == count($key_labels)) {
$col_num = 0;
$row_num++;
}
}
/* Change the array second dimension index values to associative values */
foreach ($rows as $rows_idx => $row) {
unset($rows[$rows_idx]);
foreach ($row as $row_idx => $row_val) {
$rows[$rows_idx][$key_labels[$row_idx]] = $row_val;
}
}
var_dump($rows);
私の質問は... 2 つの冗長な (そして一見不格好な) ループを使用するよりも直接的にこれを達成する方法はありますか? それともこれが本当に最善の方法ですか?
注: オブジェクトは常に、カウントの偶数係数に等しい行数を返すことが期待され$key_labels
ます。