检查数组中是否有值并创建php if语句

时间:2015-03-24 21:37:30

标签: php mysql arrays

我能够在查询后创建数组。

<?
    $results = array();
    while($row = mysql_fetch_assoc($result))
    {
       $results[] = $row;
    }
?>

我现在从查询结果中得到以下数组:

array(2) {
  [0]=>
  array(1) {
    ["form_type"]=>
    string(6) "VF-302"
  }
  [1]=>
  array(1) {
    ["form_type"]=>
    string(6) "VF-301"
  }
}

例如,如果&#34; VF-301&#34;值存在于数组中,php if语句会是什么?

    <? //not working
    if(in_array("VF-300", $results)){ 
    echo "this value is in array";
    } else {
    echo "this value is not in array";
    }
    ?>

3 个答案:

答案 0 :(得分:1)

foreach($results as $result) {
    if(in_array("VF-300", $result)){ 
        echo "this value is in array";
    } else {
        echo "this value is not in array";
    }
}

需要考虑嵌套数组

答案 1 :(得分:0)

您正在包含其他数组的数组中搜索VF-300的值。

您需要循环所有值。如果您知道在从数据库填充数组时需要执行的操作,则可以使用该循环。

例如

   while($row = mysql_fetch_assoc($result))
    {   
       if(in_array("VF-300", $row)){ 
          echo "this value is in array";
       } else {
          echo "this value is not in array";
       }
        $results[] = $row;

或者你需要再次循环。

答案 2 :(得分:0)

在这里,我想要做点什么。这是因为你的原始数组是由其他数组组成的,所以如果你只使用in_array,它会检查一个值,而不是成员中的值。这个功能适合你:

    function in_array_m($needle,$haystack) {
        return in_array(true,array_map(function($v) use($needle,$haystack) { 
            return in_array($needle,$v); 
        },$haystack));
    }

典型的解决方案涉及循环,但我想弄得一团糟!

这个解决方案优于其他解决方案的优势在于你得到的是真或假,而不是每个子集的一个结果!