0

我的数组如下所示:

array( '0|500|0.50', '501|1000|0.75' );

我正在尝试运行搜索以获取具有搜索值的 KEY。

我做了这个功能来搜索:

function cu_array_search($str,$array){
    foreach($array as $key => $value) {
        if(strstr($str,$value)) {
            return true;
        } else {
            return false;
        }
    }
}

并在检查时像这样使用它:

if (cu_array_search(500,$array) {

但它永远不会返回 true,尽管 500 存在于数组的第一个键中。

如何解决这个问题?

谢谢

4

4 回答 4

2

strpos会让你的函数返回 true,即使那是0.5001但不是500

您应该将值分解为|,然后检查数组中的数字是否。

function cu_array_search($num, $array){
  return count(array_filter($array, function ($var) use ($num) {
    return in_array($num, explode('|', $var));
  })) > 0;
}
于 2012-12-01T11:54:00.123 回答
1

haystack 是第一个参数,而不是第二个:

if(strstr($value,$str)) {

此外,strpos在这方面速度更快,因此您应该使用:

function cu_array_search($str,$array){
    foreach($array as $key => $value) {
        if(strpos($value,$str) !== false) {
            return $key;
        } else {
            return false;
        }
    }
}
于 2012-12-01T11:50:39.703 回答
0

一、strstr参数错误

其次,return false应该在循环的末尾。

第三,如果你需要 KEY 那么你需要使用return $key而不是return true

function cu_array_search($str,$array){
    foreach($array as $key => $value) {
        if(strstr($value, $str)) {
            return $key;
        }
    }
    return false;
}
于 2012-12-01T11:48:09.510 回答
0

这工作正常

<?php

function cu_array_search($str, $array) {
    foreach($array as $key => $value) {
        $temp_array=explode('|', $value);
        if (in_array($str, $temp_array))
            return true;
    }
    return false;
}

$array = array( '0|500|0.50', '501|1000|0.75' );


if (cu_array_search(500, $array))
    echo "success";
else
    echo "failed" ;

?>
于 2012-12-01T12:05:23.363 回答