キーを使用して多次元(最大1〜3レベル)を平坦化する方法はありますか?
私はこのような配列を持っています
array(
'Orange',
'Grape',
'Banana' => array(
'Big',
'Small'
),
'Apple' => array(
'Red',
'Green' => array(
'Soft',
'Hard'
)
)
);
そして、私はそれをこのようにしたい
array(
'Orange',
'Grape',
'Banana',
'Big',
'Small',
'Apple',
'Red',
'Green',
'Soft',
'Hard'
);
したがって、最近インデックスを取得するために、出現順序を維持しますarray_keys
。
私はいくつかの方法を試しましたが、配列要素が新しい配列のキーである場合、それはフラット化されず、スキップされるだけなので、最終的な配列は次のようになります
array:7 [▼
0 => "Orange"
1 => "Grape"
2 => "Big"
3 => "Small"
4 => "Red"
5 => "Soft"
6 => "Hard"
]
そのための再帰関数を書くことができます:
$nested = array(
'Orange',
'Grape',
'Banana' => array(
'Big',
'Small'
),
'Apple' => array(
'Red',
'Green' => array(
'Soft',
'Hard'
)
)
);
function flattern($array)
{
$flat=[];
foreach($array as $key=>$val){
if(is_array($val)){
$flat[]=$key;
$flat = array_merge($flat, flattern($val));
}else{
$flat[]=$val;
}
}
return $flat;
}
var_dump(flattern($nested));
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加