我有一个像这样的对象数组:
Array ( [0] => stdClass Object ( [date] => 12.09.2015 [title] => Testtitle3 ) [1] => stdClass Object ( [date] => 01.01.2015 [title] => Testtitle3 ) [2] => stdClass Object ( [date] => 12.09.2015 [title] => Testtitle3 ) }
现在我想通过数组(使用foreach)循环来检查日期是否是重复条目。如果是这样,在新数组中放置重复项以获得这样的输出(例如12.09.2015 - cos这在我的示例数组中是重复的):
{12.09.2015 - title1:Testtitle3,title2:Testtitle3}
所以基本上脚本应该在对象数组中找到重复的日期,并用两个标题(相同但非常重要)和一个日期回显它们。
我试过这样的事,但它不起作用:
foreach($array as &$item){
foreach($array as &$itemCheck){
if($item->date === $itemCheck->date){
echo '{' . $item->date . ' - ' . $item->title . ',' . $itemCheck->title . '}';
}
}
}
我很沮丧:)你可以再帮我一次吗? THX !!!
答案 0 :(得分:0)
您应该将日期存储在变量
中$temp = array();
foreach ($array as $item) {
if (in_array($item->date, $temp)) {
echo '{' . $item->date . ' - ' . $item->title . ',' . $itemCheck->title . '}';
} else {
$temp[] = $item->date;
}
}
答案 1 :(得分:0)
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;
}
答案 2 :(得分:0)
您可以折叠数组,然后可以检入第二个循环。
$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'
)
)