这个问题不是我试图在数组中找到特定的字符串。我想知道检查数组中是否存在字符串的最简单方法。例如:
[1,2,3] // this does NOT contain a string
[1,'two',3] // this DOES contain a string
我能想到的最好的方法是循环遍历所有数组项并在每个数组项上运行is_string()。
$array = [1,'two',3];
$hasString = false;
foreach($array as $item){
if (is_string($item)){
$hasString = true;
}
}
这有效,但感觉很笨重。有没有更好的方法来做到这一点,不需要像这样循环遍历数组,还是这样做得好?
答案 0 :(得分:2)
您也可以使用array_filter进行检查:
<?php
function checkString($arr) {
if (count(array_filter($arr, 'is_string'))) {
return "Array has string";
} else {
return "Array hasn't any strings";
}
}
echo checkString([1,'two',3]);
echo "<br/>";
echo checkString([1,2,3]);
结果:
Array has string
Array hasn't any strings
您的Eval
答案 1 :(得分:0)
由于现在对Thamilan的答案有不同的答案,我将评论作为答案发布。
function array_has_string($array){
return count(array_filter($array, 'is_string')) ? true : false;
}
$test_1 = array_has_string([1,'two',3]);
//$test_1 = true
$test_2 = array_has_string([1,2,3]);
//$test_2 = false