はじめに
備忘録
タイトルの通りです。
どなたかのお役に立てれば幸いです。
※追記
コメント欄にて、すっきりと書けるコードや、コードの補足情報を教えていただけました。
ぜひコメント欄の方も参照してください。
コメントしてくださった方々、ありがとうございました!
foreach文で一部だけ2次元の連想配列からキーを取り出す
例えば、以下のような2次元の連想配列があったとします。
$array = [
"aaa" => true,
"bbb" => "foo",
"ccc" => [
"ddd" => "this",
"eee" => "is",
"fff" => "sample",
"ggg" => "array"
]
];
この場合は以下のように書くことで全ての次元からキーだけを取り出すことができます。
$key_array = [];
foreach ($array as $key1 => $value1) {
array_push($key_array, $key1);
if (gettype($value1) == "array") {
foreach ($value1 as $key2 => $value2) {
array_push($key_array, $key2);
}
}
}
gettype()
は、引数の型を調べる関数です。
1回目のforeach
で取り出した値($value1
)が配列だった場合のみ、もう一度foreach
を実行することで2次元配列に対応しています。
print_r($key_array);
すると
Array
(
[0] => aaa
[1] => bbb
[2] => ccc
[3] => ddd
[4] => eee
[5] => fff
[6] => ggg
)
キーだけを取り出せたことが確認できます。