1

私はこのような配列を持っています。

  $flds = array("fn", "ln", "em");

このような別の連想配列があります。これは JSON POST から動的に返されます。

  $ret = array("fn" => "xyz", "ln" => "abc", "em" => "s.2", "another" => "123")

最初の配列が2番目の配列に存在するかどうかを検索したい。これは私がしました:

  if ( in_array( $flds, array_keys($ret))) 
      echo "exists";
  else 
      echo "does not";

常に「しない」を返します。$flds と array_keys($ret) を印刷すると、どちらもまったく同じに見えます。

ここで何か問題がありますか?

4

2 に答える 2

4

このコードは、$flds 配列全体が $ret の値になるように探しています。

おそらくarray_intersect()を使用して、結果の長さを確認したいと思うでしょう。

于 2012-06-07T20:04:48.287 に答える
1

in_array()関数は、要素が配列の要素であるかどうかを検索します。あなたの場合、最初の配列が2番目の配列のキーのサブセットであるかどうかを判断したいと考えています。何が機能し、何が機能しないかを示しましょう。

/* check if 'fn' is an array key key of $ret */
in_array('fn', array_keys($ret)) // true

/* check if array('fn') is an element of array(array('fn'), 'en') */
in_array(array('fn'), array(array('fn'), 'en')) // true

/* check if $flds is a key of $ret */
in_array( $flds, array_keys($ret)) // false

/* check if all elements of $flds are also keys of $ret */
array() === array_diff($flds, array_keys($ret)) // true
于 2012-06-07T20:23:09.363 に答える