我想在一个数组中搜索是否有一个具有正好5个字符的stringlength的键,并且还必须是整数类型。
我试过了:
$key = array_search( strlen( is_int($array)=== true) === 5 , $array);
但这不起作用。所以我想知道它是否存在以及它是哪个键。
非常感谢。
答案 0 :(得分:2)
怎么样:
$filtered = array_filter($array, function($v){
return !!(is_int($v)&&strlen($v)==5);
});
基本上array_filter
遍历数组的每个元素,将每个值$v
传递给可调用函数。根据您所需的条件,它返回一个布尔值(true或false),以确定它是否保留在结果$filtered
数组中。
!!
并非绝对必要,因为(...)
将确保正确投射布尔值,但感叹号只是语法糖 - 个人偏好的可读性。
答案 1 :(得分:1)
这不是array_search()的工作方式。它搜索匹配字符串的值,并返回一个键。如果你想搜索一个密钥,最好的办法是简单地迭代它。
foreach ($array as $key => $value) {
if (strlen($key) === 5) {
echo $key . ": " . $value;
break; //Finish the loop once a match is found
}
}
答案 2 :(得分:1)
array_search不会像这样尝试
foreach ($array as $key => $value) {
if ((strlen($value) == 5) && is_int($value))
{
echo $key . ": " . $value;
}
}
您可以使用array_walk
array_walk($array, function(&$value, $index){
if (strlen($value) == 5 && (is_int($index))) echo "$index:$value";
});
数组遍历遍历每个元素并应用用户定义的函数
答案 3 :(得分:1)
这里是将值与整数和精确5个字符
进行比较的示例$array = array(12345,'asatae');
$key_val = array();
foreach($array as $each_val){
if(is_int($each_val) && strlen($each_val) == 5){
$key_val[] = $each_val;
}
}
echo "<pre>";
print_r($key_val);
你的输出就像
Array
(
[0] => 12345
)
注意:在数组中必须是整数值而不是引号
like array(23,“23”,23.5,“23.5”)
23是第一个键的整数..