前提・実現したいこと
連装配列を複数キーと比較し、「キーが1つでも存在する場合」を boolean で得たいです。
発生している問題・エラーメッセージ
冗長なコードしか書けないのですが、もっと簡潔な書き方に挑戦しています。
該当のソースコード
連想配列$array
と、複数キーのパターン$keys_A
および$keys_B
です。
$array = ['k1'=>1,'k2'=>2,'k3'=>3]; // パターンA $keys_A = ['k1','k4']; $is_keys_A = true; // 'k1' があるので true を得たい // パターンB $keys_B = ['k4','k5']; $is_keys_B = false; // 1つもないので false を得たい
試したこと
冗長なコードはこちらです。結果はこれを得たいです。
php
// 連装配列と複数キー $array = ['k1'=>1,'k2'=>2,'k3'=>3]; $keys_A = ['k1','k4']; // 冗長なコード $is_keys_A = false; foreach ( $keys_A as $k ) { if ( in_array($k, array_keys($array), true) ) { $is_keys_A = true; } } var_dump( $is_keys_A );// 正しく true を得ることができる
簡潔なコードとして挑戦しているのはこちらですが、なかなか思うようにできません。
php
// 連装配列と複数キー $array = ['k1'=>1,'k2'=>2,'k3'=>3]; $keys_A = ['k1','k4']; // 簡潔なコードその1 → 失敗 $is_keys_A = in_array( $keys_A, array_keys($array), true ); var_dump( $is_keys_A ); // false を得てしまう // 簡潔なコードその2 → 失敗 $is_keys_A = !array_diff_key(array_flip($keys_A), $array); var_dump( $is_keys_A ); // false を得てしまう
1行くらいでさらっと書けないものでしょうか…
まだ回答がついていません
会員登録して回答してみよう