在PHP中搜索字符串格式数组中的数字?

时间:2012-12-01 11:46:03

标签: php arrays

我的数组看起来像这样:

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 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:1)

大海捞针是第一个参数,而不是第二个参数:

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

答案 2 :(得分: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;
}

答案 3 :(得分: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" ;

?>