php检查数组内部的某些值

时间:2014-08-14 13:16:18

标签: 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 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;
    }

这是var_dump($ events)

的输出
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"
    }
} 

2 个答案:

答案 0 :(得分:1)

您可以将此用于function checkArray(),它将返回第一个匹配的密钥,如果找不到该日,则返回false,

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

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

答案 1 :(得分:0)

如果您的数组有多个维度,则需要对数组进行递归搜索。

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;
    }
 ?>

我是从array_search获取的。