为数组中的所有元素添加值(php)

时间:2014-10-17 09:48:55

标签: php arrays elements

我有一个从数据库中获取数组的查询。

$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分钟。 我该怎么做?

5 个答案:

答案 0 :(得分:1)

好吧,毕竟我自己想通了。

$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 :(得分:0)

您需要像这样更新

$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']}'

或者那个目的。

答案 2 :(得分:0)

您可以使用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>";
}

答案 3 :(得分:0)

您只能在SQL中执行此操作:

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

答案 4 :(得分: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)存储时间 - 否则您将无法将它们返回到您正在使用的“计划”。

如果您只想更新数据库记录,请参阅Axel的回答。