私は正確なリクエストが可能ではないと思います。 $dat[$ar[1]][$ar[3]] = $ar[4]
が$dat[$ar[1]] = array($ar[3] => $ar[4])
と同じであるとします。それはあなたがこのように二回$dat[$ar[1]]
を割り当てるしようとしている意味:
最初の値を上書きし、それが無意味になり
$dat[$ar[1]] = $ar[2];
$dat[$ar[1]] = array($ar[3] => $ar[4]);
。多分あなたが本当にしたいことはあるようなもの:
$dat[$ar[0]]['value'] = $ar[1];
$dat[$ar[0]][$ar[2]]['value'] = $ar[3];
$dat[$ar[0]][$ar[2]][$ar[4]]['value'] = $ar[5];
$dat[$ar[0]][$ar[2]][$ar[4]][$ar[6]]['value'] = $ar[7];
これも「の値が」キーとして使用するためにあなたの$ar
配列の値になることはありませんことを期待しています。簡単にするために、私はあなたが$ar = array('color','blue','type','plant','flower','tulip')
のように、0ベースであるスカラー配列を使用していると仮定するつもりですそして、この試してみてください。そして、あなたの出力は次のようになります
$dat = array();
$pnt = &$dat;
$cnt = count($ar);
for ($key=0; $key < $cnt; $key+=2) {
$value = $ar[$key];
$pnt[$value]['value'] = $ar[$key + 1]; // we assign it to the key 'value' of the current array dimension
$pnt = &$pnt[$value]; // we now point to the new array dimension
}
echo '<pre>';
print_r($dat);
echo '</pre>';
を:
Array
(
[color] => Array
(
[value] => blue
[type] => Array
(
[value] => plant
[flower] => Array
(
[value] => tulip
)
)
)
)
出典
2016-03-23 04:58:41
Huy
あなたは、いくつかを提供することができます入力データの例と期待される出力データのいくつか? –
'$ ar'は1から始まるのではなく、0ベースのスカラー配列ですか?または実際の連想配列ですか? '$ ar = array( 'color'、 'blue'、 'type'、 'plant'、 'flower'、 'tulip')'以上のように '$ ar = array( '1' => 'blue'、 'blue'、 '4' => 'plant'、 '5' => 'plant'、 '6' => 'flower' => 'color'、 '2' 、 '7' => 'flower'、 '8' => tulip ') ' – Huy
配列はインデックス1から始まるスカラー配列です – pedmillon