0

配列に文字列が存在するかどうかの確認に問題があるようです。私の質問にはおそらく本当に明白な答えがありますが、私はPHPを初めて使用します。

とにかくここに私のコードがあります:

while($row = mysql_fetch_assoc($result))
{
    $result_array[] = $row;
}

if (in_array("496891", $result_array)) 
{
echo "true";
}
else
{
echo "false";
}

配列は次のようになります。

Array ( [0] => Array ( [ID] => 496891 ) [1] => Array ( [ID] => 1177953 )) 

私のコードは常にfalseをエコーし​​ます。誰かが私が間違っていることを知っていますか?

ありがとう

4

3 に答える 3

3

ネストされた配列があり、次のように各項目に対してチェックする必要があります。

function in_multidimensional_array($val, $array) {
  foreach($array as $key => $value) {
     if (in_array($val, $array[$key])) {
        return true;
     }  
  }
  return false;
}

次を使用して、値496891が存在するかどうかを確認できます。

if(in_multidimensional_array('496891', $result_array)) {
   print 'true';
} else {
   print 'false';
}
于 2012-06-22T08:01:55.073 に答える
2

Krister のソリューションは、MySQL ループに行が 1 つしかない場合にのみ機能します。これにより、すべての結果がチェックされます。

while($row = mysql_fetch_assoc($result))
{
    $result_array[] = $row;
}

$found = false;
foreach ($result_array as $v) {
    if (in_array("496891", $v)) {
        $found = true;
    }
}

if ($found == true)
    echo 'true';
else
    echo 'false';
于 2012-06-22T08:04:27.713 に答える
0

文字列を検索していますが、配列には数値が保持されています。true を返すように文字列として具体的に挿入するか、検索前に各フィールドを文字列として挿入する必要があります。

于 2012-06-22T08:02:08.540 に答える