我正在处理结构不同的数组,具体取决于数组中的数字或项目。
例如,以下是包含一个项目的数组。
// 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;
}
但如果代码有点冗长,我觉得它太重复而且效率低下。 有没有办法在一个有效的短语中执行此操作,无论数组内的内容数量是多少?如果有什么不清楚,请告诉我。谢谢!
答案 0 :(得分:3)
您可以做的是将非数组更改为具有单个元素的数组,然后您可以一致地处理它。
if (!is_array($assignment)) {
$assignment = array($assignment);
}
foreach ($assignment as $key) {
echo $key=>Id;
}