我正在尝试创建一个能够检查数组是否存在某个值的函数,如果该值存在则返回索引的值。
我有以下代码查询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"
}
}
答案 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获取的。