php检查数组中的特定值

php检查数组中的特定值,php,arrays,Php,Arrays,我试图创建一个函数,该函数能够检查数组中的某个值,如果该值存在,则返回索引的值 我有以下查询db并将结果放入数组的代码,但当我将该数组传递到函数中时,由于某种原因不会返回任何结果 谁能帮我一下吗 $conn = mysql_connect($host, $user, $pass); $conn = mysql_select_db($db, $conn); $sql="SELECT DATE_FORMAT(due_date,'%d') AS day,short,tid

我试图创建一个函数,该函数能够检查数组中的某个值,如果该值存在,则返回索引的值

我有以下查询db并将结果放入数组的代码,但当我将该数组传递到函数中时,由于某种原因不会返回任何结果

谁能帮我一下吗

    $conn = mysql_connect($host, $user, $pass); 
    $conn = mysql_select_db($db, $conn);

    $sql="SELECT DATE_FORMAT(due_date,'%d') AS day,short,tid FROM tasks WHERE due_date BETWEEN '2014-8-01' AND '2014-8-31'";    

    $result=mysql_query($sql);

    $num = mysql_num_rows($result);

    for ($i = 0; $i < $num; $i++)
    {
        $events[] = mysql_fetch_assoc($result);
    }

    var_dump($events);
    echo "Check Array results is " . checkArray("15", $events);

    function checkArray($day, &$arr){
        $key = array_search($day, $arr);
        echo "the key is ". $key;
        return $key;
    }

如果数组不止一个维度,则需要对数组进行递归搜索

array(2) { 
    [0]=> array(3) { 
        ["day"]=> string(2) "15" 
        ["short"]=> string(6) "test 1" 
        ["tid"]=> string(1) "1" 
    } 
    [1]=> array(3) { 
        ["day"]=> string(2) "31" 
        ["short"]=> string(6) "test 2" 
        ["tid"]=> string(1) "2" 
    } 
}


<?php
    function recursive_array_search($needle,$haystack) {
        foreach($haystack as $key=>$value) {
            $current_key=$key;
            if($needle===$value OR (is_array($value) && 
                recursive_array_search($needle,$value) !== false)) {

                return $current_key;
            }
        }
        return false;
    }
 ?>
数组(2){
[0]=>数组(3){
[“日”]=>字符串(2)“15”
[“short”]=>字符串(6)“测试1”
[“tid”]=>字符串(1)“1”
} 
[1] =>数组(3){
[“日”]=>字符串(2)“31”
[“short”]=>字符串(6)“测试2”
[“tid”]=>字符串(1)“2”
} 
}

这是我从中获取的。

您可以将其用于函数checkArray(),如果找不到日期,它将返回第一个匹配的键或false

function checkArray($day, $array){
    foreach ($array as $key => $value)
    {
        if (array_search($day, $value)) 
            return $key;  
     }
     return false; 
};


但是,为什么不在SQL中添加
day='15'

为什么不在MySQL语句中检查日期,为什么要执行这个额外步骤?您有一个数组。您需要循环使用它们来获取具有相应值的键。您不能直接在SQL请求中添加
WHERE day=[yourValue]
吗?我需要获取这些日期之间的所有数据,这是为了一个运行良好的日历应用程序。谢谢,我在SQL中不这样做,因为我需要在该月内保存所有日期,我只是用了15个来测试,实际上我有一个循环,它贯穿了所有的时间
function checkArray($day, $array){
    foreach ($array as $key => $value)
    {
        if (array_search($day, $value)) 
            return $key;  
     }
     return false; 
};