我的数组看起来像这样:
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个。
如何解决这个问题?
谢谢
答案 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" ;
?>