[英]Adding a value to all elements in an array (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分钟的时间。 我怎么做?
好吧,毕竟我自己想通了。
$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);
您需要像这样更新
$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']}'
或为此目的。
您可以使用DATE_ADD从mysql查询本身进行操作。
"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>";
}
您只能在SQL中执行此操作:
"UPDATE `Schedule` SET `Time_D` VALUES = DATE_ADD(`Schedule`.`Time_D`,INTERVAL 10 MINUTE) where `Stop` = 1"
您可能会误会。 $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)来存储时间-否则,您将无法将它们引用回您正在使用的“时间表”。
如果只想更新数据库记录,请参见Axel的答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.