处理 php 数组,其内容可能有也可能没有另一个数组

Dealing with php array whose content may or may not have another array

我正在处理结构因数组中的数字或项目而异的数组。

例如下面是一个数组,其中有一项。

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

但是如果数组中的项目超过 1 个,

// 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;
}

但是如果代码有点冗长,我觉得太重复了,效率低下。 无论数组中的内容有多少,有没有办法在一个有效的短语中做到这一点?让我知道是否有任何不清楚的地方。谢谢!

你可以做的是把非数组变成一个只有一个元素的数组,然后你就可以一致地处理它了。

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