Добавление значения ко всем элементам в массиве (php)

У меня есть запрос, чтобы получить массив из базы данных.

$result = mysqli_query($con,"SELECT `Time_D` from `Schedule` where `Stop` = 1 ");

while ($row = mysqli_fetch_array($result) ) {
echo $row['Time_D'] . "<br>";
}

Этот массив ($ row) содержит много раз, если я не ошибаюсь.

Теперь я хочу добавить, например, 10 минут для всех элементов в массиве.
Как я могу это сделать?

0

Решение

Ну, сам все понял.

$result = mysqli_query($con,"SELECT `Time_D` from `Schedule` where `Stop` = 1 ");

//get database result
while ($row = mysqli_fetch_array($result) ) {
$rows[] = $row['Time_D']; //store all the times in one array
}
print_r ($rows);

echo "<br>";
$time_difference=600;
$i=0;

while (($i) < (count($rows)) ) {
$rows[$i] = ( strtotime($rows[$i]) ) + ($time_difference); //with timestamps, because, well, php and times...
$rows[$i] = date('H:i:s', ($rows[$i]) ); // back from timestamp to time
$i = $i +1;
}
print_r($rows);
1

Другие решения

Вам нужно обновить, как это

$row['Time_D'] = time() + 600;

или всего 10 секунд

$row['Time_D'] += 600;

Затем отправьте его обратно в базу данных

mysql_query('update table_name set Time_D = '{$row['Time_D']}' where id = '{$row['id']}'

ИЛИ что-то для этого.

0

Вы можете сделать это только в SQL:

"UPDATE `Schedule` SET `Time_D` VALUES = DATE_ADD(`Schedule`.`Time_D`,INTERVAL 10 MINUTE) where `Stop` = 1"
0

Вы можете ошибаться. $row не содержит много раз. Пока есть доступные записи, $row присваивается следующая строка результата запроса в виде массива. Если вы хотите изменить все время, сохраните их в новый массив. В вашем цикле while (не забудьте объявить $rows):

$rows[] = $row['Time_D'];

$rows сейчас хранит все время. Затем вы можете (после цикла while) перебрать $rows и изменить данные.

$rows = array_map(function($time) {
return $time + (60 * 10); // Given $time is a timestamp
}, $rows);

Если вы не хотите сохранять время (т. Е. Напрямую выводить их в цикле while), сохраните накладные расходы на array_map и сделать это прямо в цикле while:

echo $row['Time_D'] + 60*10;

В зависимости от вашей конкретной ситуации вы можете использовать хранилище значений ключа (т.е. id-to-time) для времен — иначе вы не сможете отослать их обратно к «расписанию», которое вы используете.

Если вы хотите обновить только записи базы данных, смотрите ответ Акселя.

0

Вы можете сделать это из запроса MySQL, используя DATE_ADD.

"SELECT DATE_ADD(`Time_D`,INTERVAL 10 MINUTE) AS 'Time_D' FROM `Schedule` WHERE `Stop` = 1 "

Вы можете иметь такой параметр в вашем php сценарий:

$minutes_to_add = 10;

$result = mysqli_query($con,"SELECT DATE_ADD(`Time_D`,INTERVAL ".$minutes_to_add." MINUTE) AS 'Time_D' FROM `Schedule` WHERE `Stop` = 1 ");

while ($row = mysqli_fetch_array($result) )
{
echo $row['Time_D'] . "<br>";
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector