3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PHPのforeach文で一部だけ2次元の連想配列からキーだけを取り出す方法

Last updated at Posted at 2023-02-03

はじめに

備忘録
タイトルの通りです。
どなたかのお役に立てれば幸いです。

※追記
コメント欄にて、すっきりと書けるコードや、コードの補足情報を教えていただけました。
ぜひコメント欄の方も参照してください。
コメントしてくださった方々、ありがとうございました!

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
)

キーだけを取り出せたことが確認できます。

3
1
8

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?