前提・実現したいこと
連装配列を複数キーと比較し、「キーが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
1// 連装配列と複数キー 2$array = ['k1'=>1,'k2'=>2,'k3'=>3]; 3$keys_A = ['k1','k4']; 4 5// 冗長なコード 6$is_keys_A = false; 7foreach ( $keys_A as $k ) { 8 if ( in_array($k, array_keys($array), true) ) { 9 $is_keys_A = true; 10 } 11} 12var_dump( $is_keys_A );// 正しく true を得ることができる
簡潔なコードとして挑戦しているのはこちらですが、なかなか思うようにできません。
php
1// 連装配列と複数キー 2$array = ['k1'=>1,'k2'=>2,'k3'=>3]; 3$keys_A = ['k1','k4']; 4 5// 簡潔なコードその1 → 失敗 6$is_keys_A = in_array( $keys_A, array_keys($array), true ); 7var_dump( $is_keys_A ); // false を得てしまう 8 9// 簡潔なコードその2 → 失敗 10$is_keys_A = !array_diff_key(array_flip($keys_A), $array); 11var_dump( $is_keys_A ); // false を得てしまう
1行くらいでさらっと書けないものでしょうか…
回答3件
あなたの回答
tips
プレビュー