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

在PHP中搜索字符串格式数组中的数字?,php,arrays,Php,Arrays,我的数组如下所示: array( '0|500|0.50', '501|1000|0.75' ); 我正在尝试运行搜索以获取具有搜索值的密钥 我使用此函数搜索: function cu_array_search($str,$array){ foreach($array as $key => $value) { if(strstr($str,$value)) { return true; } else {

我的数组如下所示:

array( '0|500|0.50', '501|1000|0.75' );
我正在尝试运行搜索以获取具有搜索值的密钥

我使用此函数搜索:

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

如何解决这个问题


谢谢

首先,
strstr
参数错误

其次,
returnfalse
应该位于循环的末尾

第三,如果需要KEY,则需要使用
return$KEY
而不是
returntrue

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

首先,
strstr
参数错误

其次,
returnfalse
应该位于循环的末尾

第三,如果需要KEY,则需要使用
return$KEY
而不是
returntrue

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

草垛是第一个论点,而不是第二个:

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

草垛是第一个论点,而不是第二个:

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

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

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;
}
这个很好用

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

?>

这很好用

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

?>


@AhmedFouad您应该使用xdazz的解决方案,在某些情况下,字符串搜索可能会为您的场景检索到不正确的结果。@AhmedFouad您应该使用xdazz的解决方案,在某些情况下,字符串搜索可能会为您的场景检索到不正确的结果。