键入检查所有数组元素

时间:2010-02-24 01:14:00

标签: php arrays types

有没有简单的方法来检查数组的所有元素是否是特定类型的实例而不循环所有元素?或者至少是从数组中获取X类型的所有元素的简单方法。

4 个答案:

答案 0 :(得分:5)

如果不检查所有数组元素,则无法实现此目的,但您可以使用内置数组函数来帮助您。

您可以使用array_filter 返回数组。您需要提供自己的回调函数作为检查特定类型的第二个参数。这将检查数组的编号是否甚至

function even($var){
  return(!($var & 1));
}

// assuming $yourArr is an array containing integers.
$newArray = array_filter($yourArr, "even");
// will return an array with only even integers.

根据VolkerK的评论,从PHP 5.3+开始,你也可以传入一个匿名函数作为你的第二个参数。这与上面的例子相同。

$newArray = array_filter($yourArr, function($x) { return 0===$x%2; } );

答案 1 :(得分:5)

$s = array("abd","10","10.1");
$s = array_map( gettype , $s);
$t = array_unique($s) ;
if ( count($t) == 1 && $t[0]=="string" ){
    print "ok\n";
}

答案 2 :(得分:3)

  

是否有任何简单的方法可以检查数组的所有元素[某事物是什么]而不循环所有元素?

没有。如果不检查数组的所有元素,则无法检查数组的所有元素。

虽然您可以使用array_walk来自己编写样板文件。

答案 3 :(得分:0)

您还可以将array_walkcreate_function结合使用,并使用匿名函数来过滤数组。以下内容:

$filtered_array = array_filter($array, create_function('$e', 'return is_int($e)'))