我正在处理的数组,其结构取决于数组中的数字或项目而不同。
例如,下面的数组中只有一个元素:
// 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"
..
}
}
注意,this的内容在另一个数组中。不管有多少项,我都想访问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;
}