我有一个"事件" MySQL中的表: EventsDate(' ID''事件''起始日期'' END_DATE&#39)
我想检查多个事件是否具有相同的开始日期,以便在我的HTML模板中以不同方式显示它。
我的SQL请求是:
SELECT * FROM EVENTSDATE where event='$id' and start_date>='$today' order by start_date asc
现在我的foreach:
foreach ($upcomingDates as $value) { //$upcoming is the array with my sql request
}
我该怎么说:"如果你发现两行具有相同的start_date,则回显一下"
答案 0 :(得分:1)
您可以在for循环之前创建一个空数组,并将每个值作为键添加。然后,在每次迭代时,您可以检查该数组的键,如下所示:
$values = [];
foreach ($upcomingDates as $value) { //$upcoming is the array with my sql request
if(isset($values[$value])) //duplicate value found
//do something here
$values[$value] = 1;
}
答案 1 :(得分:1)
我的方法略有不同。
// Array to contain all values
$container = array();
// Loop through your existing array
foreach ($upcomingDates as $key => $value) {
// Check if the value is already in the container array
// If this is the case, its a duplicate.
if (array_key_exists($value['start_date'], $container)) {
$container[$value['start_date']]++;
echo $value.' is a duplicate with key '.$key;
}
// Add each value to the array
$container[$value['start_date']] = 1;
}
另一种方法是使用array_count_values()
foreach(array_count_values($upcomingDates) as $value => $c) {
if ($c > 1) {
echo $value.' is a duplicate';
}
}
请注意,如果您的$upcomingDates
是数组数组,则第二个选项无效。
答案 2 :(得分:0)
由于您要按start_date
订购活动:
for ($i = 0, $length = count($upcomingDates); $i < $length; $i++) {
$date = $upcomingDates[$i];
if (isset($upcomingDates[$i + 1]) &&
$upcomingDates[$i + 1]['start_date'] == $date['state_date']) {
echo 'this and the next date are equal';
}
}
答案 3 :(得分:0)
试用GROUP BY
看这里:GROUP BY
答案 4 :(得分:0)
如果要查找重复项,则可以直接从数据库中获取
恩。
<Setter Property="BindingGroup" Value="{Binding Path=_recordList}"></Setter>
或者您可以从结果数组中找到重复项
this