我有一个像这样的对象数组:
大堆([0]=>stdClass对象([日期]=>2015年9月12日[title]=>测试标题3)[1] =>stdClass对象([日期]=>2015年1月1日[title]=>测试标题3)[2] =>stdClass对象([日期]=>2015年9月12日[title]=>测试标题3)}
现在我想要循环遍历数组(使用foreach),以检查日期是否是重复的条目。如果是这样的话,将重复项放入新数组中以获得这样的输出(2015年9月12日的示例,因为这在我的示例数组中是重复项):
{2015年9月12日-标题1:测试标题3,标题2:测试标题3}
所以基本上,脚本应该在对象数组中找到重复的日期,并用两个标题(相同但无关紧要)和一个日期来回应它们。
我试过这样的东西,但不起作用:
foreach($array as &$item){
foreach($array as &$itemCheck){
if($item->date === $itemCheck->date){
echo '{' . $item->date . ' - ' . $item->title . ',' . $itemCheck->title . '}';
}
}
}
我很沮丧:)伙计们,你们能再帮我一次吗?thx!!!
您应该将日期存储在变量中
$temp = array();
foreach ($array as $item) {
if (in_array($item->date, $temp)) {
echo '{' . $item->date . ' - ' . $item->title . ',' . $itemCheck->title . '}';
} else {
$temp[] = $item->date;
}
}
foreach($array as $item){
if (isset($helper){
foreach($helper as $helperitem){
if($item->date === $helperitem->date){
echo '{' . $item->date . ' - ' . $item->title . ',' . $helperitem->title . '}';
}
}
}
$helper[]=$item;
}
您可以折叠数组,然后检查第二个循环。
$colapsedArray = array();
foreach($array as &$item){
$colapsedArray[$item['date']][] = $item['title'];
} unset($item); //else you can have strange side effects in PHP
foreach($colapsedArray as &$item) {
if (count($item) > 1) {
//echo item
}
} unset($item);
折叠后的$collapsedArray
应如下所示:
Array
(
[12.09.2015] => Array
(
'Testtitle3',
'Testtitle3'
)
[01.01.2015] => Array
(
'Testtitle3'
)
)