检查PHP数组是否包含非特定字符串

检查PHP数组是否包含非特定字符串,php,arrays,Php,Arrays,这个问题不是我试图在数组中查找特定的字符串。我想知道检查数组中是否存在字符串的最简单方法。例如: [1,2,3] // this does NOT contain a string [1,'two',3] // this DOES contain a string 我能想到的最好的方法是遍历所有数组项,然后像这样对每个数组项运行_string() $array = [1,'two',3]; $hasString = false; foreach($array as $item){ i

这个问题不是我试图在数组中查找特定的字符串。我想知道检查数组中是否存在字符串的最简单方法。例如:

[1,2,3] // this does NOT contain a string
[1,'two',3] // this DOES contain a string
我能想到的最好的方法是遍历所有数组项,然后像这样对每个数组项运行_string()

$array = [1,'two',3];
$hasString = false;

foreach($array as $item){
    if (is_string($item)){
        $hasString = true;
    }
}
这可以工作,但感觉笨重。有没有一种更好的方法不需要像这样在数组中循环,或者这是最好的方法?

您也可以使用它来检查:

<?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]);
您的

也可以用来检查:

<?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]);

你的

因为这与米兰现在的答案有点不同,所以我将此评论作为一个答案发布

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

因为这与米兰现在的回答有点不同,所以我将这篇评论作为一个回答

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

你必须逐个元素检查,直到你找到一个字符串为止,以判断数组中是否有字符串。所以你唯一能改变的就是你打破了如果你找到一个字符串,那么你就可以在代码中循环,这样你就可以尽快停止。数组\u walk,但最终还是一样的。“或者这是最好的吗”-如果使用了
break
,并且数组有大量的值,那么就足够了。你必须逐个元素检查,直到找到一个字符串,否则,判断数组中是否有字符串。所以你唯一能改变的就是你打破了如果你找到一个字符串,那么你可以在代码中循环,这样你就可以尽快停止。array\u walk,但最终还是一样的。“或者这是它得到的最好的结果吗”-如果使用
break
,并且数组有大量的值hanks,这就足够了,这更像我想要的。检查字符串是否存在的单行检查。我将其保存到代码中的一个变量中,以便于理解和重用:
$arrayHasString=count(array\u filter($array,'is\u string')我可能会将其转换为一个函数,以便更好地重用。:)<代码>函数数组_has_string($array){return count(数组_filter($array,'is_string'))}
如果数组中有多个字符串不是
true
false
,它将返回
数字。在返回之前处理这个返回booleen现在
函数数组有字符串($array){return count(数组过滤器($array,'is_string'))?true:false;}
谢谢,这更像是我想要的。检查字符串是否存在的单行检查。我将其保存到代码中的一个变量中,以便于理解和重用:
$arrayHasString=count(array\u filter($array,'is\u string')我可能会将其转换为一个函数,以便更好地重用。:)<代码>函数数组_has_string($array){return count(数组_filter($array,'is_string'))}
如果数组中有多个字符串不是
true
false
,它将返回
数字。只需在返回前处理该返回booleen now
function array_has_string($array){返回计数(array_filter($array,'is_string'))?true:false;}