处理其内容可能有或没有另一个数组的php数组

时间:2015-05-29 22:03:37

标签: php arrays stdclass

我正在处理结构不同的数组,具体取决于数组中的数字或项目。

例如,以下是包含一个项目的数组。

// Case #1
["Assignment"]=>
object(stdClass)#29 (9) {
  ["Id"]=> string(10) "1234567890"
  ..
}

但是,如果数组中有多个项目,

// Case #2
["Assignment"]=>
  array(2) {
    [0]=>
    object(stdClass)#28 (9) {
      ["Id"]=> string(10) "1234567890"
      ..
    }
    [1]=>
    object(stdClass)#28 (9) {
      ["Id"]=> string(10) "1234567890"
      ..
    }
  }

请注意,内容位于另一个数组中。无论有多少项,我都想访问Id$array->Id适用于一个案例,但对另一个案件不起作用,错误说明为Trying to get property of non-object

我可以通过计算数组中的内容数来提出一种效率低下的方法:

// say the arrays above are declared as $assignment
if($numOfAssignment > 1) {
  foreach($assignment as $key) {
    echo $key->Id;
  }
}
else { 
  echo $assignment->Id;
}

但如果代码有点冗长,我觉得它太重复而且效率低下。 有没有办法在一个有效的短语中执行此操作,无论数组内的内容数量是多少?如果有什么不清楚,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:3)

您可以做的是将非数组更改为具有单个元素的数组,然后您可以一致地处理它。

if (!is_array($assignment)) {
    $assignment = array($assignment);
}
foreach ($assignment as $key) {
    echo $key=>Id;
}