如何在Array中搜索整数和strlen

时间:2013-04-15 10:17:39

标签: php html arrays

我想在一个数组中搜索是否有一个具有正好5个字符的stringlength的键,并且还必须是整数类型。

我试过了:

$key = array_search( strlen( is_int($array)=== true) === 5 , $array); 

但这不起作用。所以我想知道它是否存在以及它是哪个键。

非常感谢。

4 个答案:

答案 0 :(得分:2)

怎么样:

$filtered = array_filter($array, function($v){
  return !!(is_int($v)&&strlen($v)==5);
});

run code

基本上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是第一个键的整数..