php判断字符是否在某个数组_PHP检查是否有任何数组值不是字符串或数字?

7 个答案:

答案 0 :(得分:8)

结合array_filter,您可以比较两个数组,看它们是否相等。

function isStringOrNumeric($in) {

// Return true if $in is either a string or numeric

return is_string($in) || is_numeric($in);

}

class Test{}

$a = array( 'one', 2, 'three', new Test());

$b = array_filter($a, 'isStringOrNumeric');

if($b === $a)

echo('Success!');

else

echo('Fail!');

答案 1 :(得分:7)

更有效的是:

function isStringNumberArray( $array){

foreach( $array as $val){

if( !is_string( $val) && !is_numeric( $val)){

return false;

}

}

return true;

}

此方法:

不会创建新数组

将在第一个无效值后停止

答案 2 :(得分:3)

如果您希望单个运行数组,可以编写自己的函数来根据特定条件检查每个值。类似的东西:

function is_string_or_numeric($var)

{

return is_string($var) || is_numeric($var);

}

然后你可以过滤你的数组:

if (array_filter($arr, 'is_string_or_numeric') === $arr)

答案 3 :(得分:2)

PHP的ctype函数,特别是ctype_alpha()和ctype_digit()也值得一看:

答案 4 :(得分:0)

两个事实:

foreach比array_map()更快,因为它不会在每次迭代时调用一个函数

使用===运算符比is_int / is_string更快,如下所示:

ng-class="{activeLink : activeLink==='PersonalInfo'}"

if ((int)$value === $value) echo "its an int";

答案 5 :(得分:0)

嗯,这实际上取决于“字符串或数字”的含义(这可能意味着is_numeric(X),或is_int(X) || is_string(X),或任何其他数量的东西)。可能最有效的方式(虽然它更详细)是:

public function isValid(array $array) {

$valid = TRUE;

foreach ($arr as $value) {

if (!is_int($value) && !is_string($value)) {

$valid = FALSE;

break;

}

}

return $valid;

}

答案 6 :(得分:0)

这个问题的答案很多。如果你想使用你一直在使用的方法,你将需要为此编写自己的函数。

因此,对于数组中的每个元素,您将检查它是否为数字:

function isNumber($array_element) {

return is_numeric($array_element);

}

然后使用array_filter调用该测试函数

if (array_filter($arr, 'is_number') {

// is a number code here.

}

你写过函数'is_string()'吗?如果没有,array_filter($arr, 'is_string')可能无法按您认为的那样工作。)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值