簡體   English   中英

向數組中的所有元素添加值(php)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM