php сравнивает две строки и создает одну на основе части строки
У меня есть две строки php, которые получены от ORACLE:
array (size=4)
0 => string '30 Jan 2014| 09:00-10:00 | Workshop' (length=61)
1 => string '30 Jan 2014| 10:00-11:00 | Workshop' (length=61)
2 => string '06 Feb 2014| 09:00-10:00 | Workshop' (length=61)
3 => string '06 Feb 2014| 10:00-11:00 | Workshop' (length=61)
..и я ищу способ получить это:
array (size=4)
0 => string '30 Jan 2014 | 09:00-11:00 | Workshop' (length=61)
1 => string '06 Jan 2014 | 09:00-11:00 | Workshop' (length=61)
В основном для объединения двух записей с одинаковой датой в одну с объединенным временем... Мне нужно сделать это, получая всю запись в
Для каждого ($результат в виде $строки){}
Цикл.. Любой совет был бы очень признателен. Спасибо
3 answers
В основном вам нужно отслеживать предыдущую дату в переменной, а затем вы можете сравнить ее на следующей итерации цикла. После выполнения сравнения вы обновляете его, чтобы оно содержало текущее значение. Затем следующая итерация может выполнить то же сравнение и присвоение переменных.
Основная идея:
$current_date = '';
foreach($result as $row){
// get date here
$date = 'get date from your string here';
// Do your check
if ($current_date === $date) {
// do something
}
// save the date for the next iteration
$current_date = $date;
}
Похоже, что вы должны быть в состоянии сделать это в своем запросе к базе данных, используя что-то вроде ГРУППИРОВКИ. Я недостаточно знаком с Oracle, чтобы точно сказать вам, как это сделать, но я уверен, что здесь достаточно людей.
На случай, если кто-нибудь посмотрит на это..:
foreach($result as $row)
{
$date = show_date($row->getField('STARTTIME'));
if($current_date === $date)
{
$EndTime = convert_time($row->getField('ENDTIME'));
}
else
{
$StartTime = convert_time($row->getField('STARTTIME'));
$EndTime = '';
}
$current_date = $date;
}
Отсортировано благодаря Джону