2

同じ値を持つ2つの配列を比較したり、配列に値が存在するかどうかを確認したりすることについて多くの質問がありますが、この質問はどこにも見つかりません:

特定の変数/値が1つの配列に2回以上存在するかどうかを確認するにはどうすればよいですか?

例えば:

$array_to_check = array( "this", "this" , "yes" , "no" , "maybe" , "yes" , "yes" );

$this_value = "this";

// how to check if $this_value or 'this' value exist more than twice in $array_to_check array:
// if it exist more than twice, echo yes it exist more than once!!

チェックする変数とチェックする配列をパラメーターとして挿入し、変数値が配列内に2回以上存在する場合にtrueを返すことができる関数があるかどうかを確認することもできます。

例えば:

$function check_if_more_than_two($the_variable_to_check, $array_to_check)

どうもありがとうございます。どんな助けでも大歓迎です:)

4

4 に答える 4

4

array_keys 関数には検索機能があります

あなたがしなければならないのは、結果の数を数えることだけです

count(array_keys($array_to_check, $this_value));
于 2013-06-08T10:38:34.423 に答える
2

@pvnarulaの回答から借りていますが、パフォーマンスが向上しています:

function array_has_dupes($array) {
    return count($array) !== count(array_flip($array));
}

array_flip重複する値を「折りたたむ」という便利な効果がありますが、他のすべての値と等しいかどうかをチェックする必要はありません。配列の保存方法、アクセス方法などと関係があります。ただし、これは文字列および/または数値の配列に対してのみ機能し、ネストされた配列やより複雑なものでは機能しないことに注意してください。

パフォーマンス統計:

  • array_unique: 2.38407087326 秒で 1,000,000 回の反復
  • array_flip: 1.63431406021 秒で 1,000,000 回の反復

編集:質問を読み直して、これが求められているものではないことに気付きました! それでも知っておくと便利なので、そのままにしておきます。

実際に質問に答えるにarray_keysは、返された配列を数え、少なくとも 2 つの項目があるかどうかを確認するのが最善の方法です。

function array_has_dupes($array,$value) {
    return count(array_keys($array,$value)) > 1;
}
于 2013-06-08T11:13:13.587 に答える
1
function check_if_more_than_two($the_variable_to_check, $array_to_check) {
  $values_array= array_count_values($array_to_check);
  if ($values_array[$the_variable_to_check] > 2 ) {
    return true;
  } else {
    return false;
  }
}
于 2013-06-08T10:38:46.800 に答える