PHP in_array结果总是一样的。

时间:2011-06-08 11:11:08

标签: php arrays

<?php
    $a = $monitoring->getMonitoringServers();
    if (in_array("192.168.100.253", $a))
        echo "y";
    else
        echo "n";
?>

print_r($a)收益:

Array (
   [0] => stdClass Object ( [address] => 192.168.100.253 )
   [1] => stdClass Object ( [address] => 192.168.100.253 )
) 

这段代码有什么问题?答案永远不是!

4 个答案:

答案 0 :(得分:2)

您的数组由对象组成,而不是字符串。

通过执行in_array("192.168.100.253", $a),您正在寻找$ a中的字符串"192.168.100.253",正如您在print_r上看到的那样 - 它位于对象内部。

答案 1 :(得分:1)

$flag = false;
foreach($a as $obj){
  if($obj->address == "192.168.100.253"){
     $flag = true;
     break;
  }
}

if($flag){
   echo 'Y';
}
else{
   echo 'N';
}

$ a是stdObjects数组,您将它们视为正常值。

您需要使用foreach循环来遍历$ a的每个元素。

答案 2 :(得分:0)

$a var是一个对象,而不是一个数组。

有关也适用于对象的函数,请参阅http://www.php.net/manual/en/function.in-array.php#103983

答案 3 :(得分:0)

简单的尝试dis

  

$ a = $ monitoring-&gt; getMonitoringServers();

     

if(!in_array(“192.168.100.253”,$ a-&gt;地址)      回声“y”;否则回声“n”; ?&GT;   你得到输出n