我有一个包含值为对象的键的对象,在这些对象内部还有另一个对象作为其中一个键的值。我已经能够通过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;
}
}
}
答案 0 :(得分:0)
你可以像这样嵌套循环:
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.