我有一个值的数组,我想检查所有的值是字符串或数字。什么是最有效的方法来做到这一点?PHP检查是否有任何数组值不是字符串或数字?
目前我只是检查字符串,所以我只是做if (array_filter($arr, 'is_string') === $arr)
这似乎是工作。
我有一个值的数组,我想检查所有的值是字符串或数字。什么是最有效的方法来做到这一点?PHP检查是否有任何数组值不是字符串或数字?
目前我只是检查字符串,所以我只是做if (array_filter($arr, 'is_string') === $arr)
这似乎是工作。
请参见:PHP的is_string()和is_numeric()功能。
与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!');
PHP的ctype函数,具体ctype_alpha()
和ctype_digit()
也值得一看:
如果你正在寻找通过数组做一次运行,你可以写自己的函数根据您的具体标准检查每个值。喜欢的东西:
function is_string_or_numeric($var)
{
return is_string($var) || is_numeric($var);
}
然后您可以筛选阵列,如:
if (array_filter($arr, 'is_string_or_numeric') === $arr)
嗯,这真的取决于你所说的“字符串或数字”是什么(这可能意味着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;
}
更有效的将是这样:
function isStringNumberArray($array){
foreach($array as $val){
if(!is_string($val) && !is_numeric($val)){
return false;
}
}
return true;
}
这种方法:
很多这个问题的答案。如果你想使用你一直使用的方法,你会想为此编写自己的函数。
所以你要检查阵列中的每个元素,如果它是一个数字:
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')
可能不会按照您认为的方式工作)。
难道你acheive同样的事情,用更少的代码,如果你只是跑,如果(array_filter($改编,“is_numeric”),而不是创建一个新的功能。 – 2014-05-20 16:51:06
似乎题外话我 – 2017-10-10 16:05:52
两个事实:
功能:
if ((int)$value === $value) echo "its an int";
if ((string)$value === $value) echo "its a string";
如果他需要分别在每个字段上存储数据,那么效果会非常好,但是当您只需要整个数组中的一个值时效率很低,不是吗? – Vyktor 2012-02-06 21:54:58
我的歉意,错了。我已经更新它使用array_filter,但我仍然认为这个解决方案将遍历数组两次(但我相信是不可避免的) – 2012-02-06 22:05:54
我明白你的函数的逻辑,但我认为很多程序员忘了“老方法”去思考以程序方式和顺序方式处理事物。看看我的答案,诚实地告诉我你喜欢什么。 – Vyktor 2012-02-06 22:21:03