确定php中数组元素的类型

时间:2012-03-21 09:34:49

标签: php

我正在调用一个返回数组的函数。 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”}

如何检查数组元素是对象还是字符串?

6 个答案:

答案 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)

答案 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);