检查数组的第一个元素,而不考虑数组索引


Checking the first element of array, regardless of array indexes

我需要检查array中的元素是objects还是其他东西。到目前为止,我是这样做的:

if((is_object($myArray[0]))) { ... }

但是,有时情况决定了输入array没有以零开头(甚至不numeric)的索引,因此要求$myArray[0]将生成Notice,但如果第一个数组元素实际上是object(但在另一个索引下),在我的条件下也会返回错误的结果。

我能想到在这里做的唯一方法是foreach循环,我会在第一次尝试时立即突破它。

foreach($myArray as $element) {
   $areObjects = (is_object($element));
   break;
}
if(($areObjects)) { ... } 

但我想知道是否有比这更快的代码,因为这里似乎不需要foreach循环。

您可以使用reset()函数从数组中获取第一个索引数据

if(is_object(reset($myArray))){
 //do here
}

你可以得到一个键数组并得到第一个:

$keys = array_keys($myArray);
if((is_object($myArray[$keys[0]]))) { ... }

试试这个

reset($myArray);
$firstElement = current($myArray);

current 获取当前索引中的元素,因此您应该使用 reset 将数组的指针重置为第一个元素

http://php.net/manual/en/function.current.php

http://php.net/manual/en/function.reset.php