我有一个对象,它包含值为对象的键,在这些对象内部还有另一个对象作为其中一个键的值。我已经能够通过做4个循环从我需要的深度嵌套对象中获得一个特定的值,但我想知道是否有更好的方法
{
record1: {
key1: value1,
key2: value2,
key3: {
key_x1: value_x1,
key_x2: value_x2,
key_x3: value_x3
}
}
record2: {
key1: value1,
key2: value2,
key3: {
key_x1: value_x1,
key_x2: value_x2,
key_x3: value_x3
}
}
}
因此,对于每个记录(record1
和record2
等),我需要从key_x1
中取出值并将其存储在一个数组中。关于如何在没有4个foreach循环的情况下实现这一点,有什么想法吗?
编辑:这是我的作品,只是看起来很难看:
$mainObject
$a = [];
$dateArray = [];
foreach ($mainObject as $individualOb) {
$dates = $individualOb->getDate();
$a[] = $dates;
}
if (empty($a)) {
return true;
} else {
foreach ($a as $date) {
foreach ($date as $key => $value) {
if ($key == 'date') {
$dateArray[] = $value;
}
}
}
foreach ($dateArray as $value) {
if(strtotime($value) < strtotime('-1 year') ) {
return true;
}
}
}
您可以嵌套这样的循环:
foreach ($mainObject as $individualOb) {
foreach ($individualOb->getDate() as $key => $value) {
if ($key == 'date' && strtotime($value) < strtotime('-1 year') ) {
return true;
}
}
}
我不知道为什么在没有元素的情况下要返回true
,因为false
似乎更合乎逻辑。无论如何,你可以直接在$mainObject
:上进行测试
if (empty($mainObject)) {
return true;
} else // ...etc.