我正在调用一个返回数组的函数。 for循环迭代提供以下输出。
string(22)“text / xml; charset = UTF-8”
string(7)“chunked”
string(4)“gzip”
array(2){[“Expect”] => string(12)“100-continue”[“Content-Type”] => string(48)“application / x-www-form-urlencoded; charset = utf-8”}
对象(CFSimpleXML)#10(1){[0] => string(6)“123456”}
如何检查数组元素是对象还是字符串?
答案 0 :(得分:6)
foreach ($array as $element) {
if (is_array($element)) {
// array
} else if (is_string($element)) {
// string
} else if (is_int($element)) {
// int
} else if (is_float($element)) {
// float
} else if (is_bool($element)) {
// bool
} else if (is_object($element)) {
// object
} else if (is_resource($element)) {
// resource
} else {
// null/invalid type (you could add an === NULL if you want, I suppose)
}
}
还有get_type()
和typeof
运算符,但由于这些返回字符串可能会在以后的某些PHP版本中发生变化,因此is_*()
函数更可靠。
答案 1 :(得分:2)
我更喜欢切换技巧解决方案:
foreach ($array as $element) {
switch(true)
{
case is_array($element):
// array
break;
case is_string($element):
// string
break;
case is_int($element):
// int
break;
case is_float($element):
// float
break;
case is_bool($element):
// bool
break;
case is_object($element):
// object
break;
case is_resource($element):
// resource
break;
default:
// null
}
}
答案 2 :(得分:1)
if (is_object($arrayElement)) ...
if (is_array($arrayElement)) ...
if (is_string($arrayElement)) ...
答案 3 :(得分:0)
使用is_array()
http://ru2.php.net/manual/en/function.is-array.php; is_string()
http://ru2.php.net/manual/en/function.is-string.php和is_object()
http://ru2.php.net/manual/en/function.is-object.php函数。
答案 4 :(得分:0)
您可以使用PHP gettype函数,然后在一个简单的操作中执行所需的操作 切换案例代码。
http://php.net/manual/en/function.gettype.php
见这里:http://codepad.org/LRJcrKjJ
<?php
$data = array(1, 1.,'hello', NULL, new stdClass);
foreach($data as $item)
{
$currType = gettype($item);
switch($currType){
case "integer" :
echo "I am integer ".$item." , double of me = ".($item*2)."\n";
break;
case "string" :
echo "I am string ".$item." , reverse of me = ".strrev($item)."\n";
break;
default:
echo "I am ".$currType ."\n" ;
break;
}
}
?>
答案 5 :(得分:0)
您可以通过这种方式获取数组元素类型的列表
$types = array_map('gettype', $array);