2017-01-19 74 views
-2

我正在編寫一些代碼以提供我已接近完成的Google認證店鋪數據。我只需要提供發貨日期和交貨日期。我已經編寫了代碼在產品級別提供這些信息。但是,如果訂單中有多個產品,我需要選擇最大的發貨日期。收集產品變量並找到php中最大的一個

例如; 訂購有兩個產品。 Product $ with $ ship_date = 2和porductb with $ ship_date = 5

我需要收集所有$ ship_dates(2和5)並返回最高的一個(5)。 我的問題是如何編寫PHP來正確收集所有$ ship_dates - 我應該創建一個數組,如果是的話如何?

+0

只要不提供代碼你不會得到一個有用的答案。然而,根據你所描述的,閱讀更多關於PHP函數['array_map()'](http://php.net/manual/en/function.array-map.php)和['max()'] (http://php.net/manual/en/function.max.php)。 – axiac

+0

它更多的是一種方法而不是特定的語法。我在循環中獲取產品信息的完整列表; $ line_items = $ order-> get_items(); foreach($ line_items as $ item){ $ product = $ order-> get_product_from_item($ item); $ prod_name = $ item ['name']; – Jolo

+0

如果你已經在列表中循環了,那麼你可以計算循環中的最大值,並記住達到最大值的項目。 – axiac

回答

0

將所有需要的變量放入數組中,然後使用max

$ship_date1 = 2; 
$ship_date2 = 5; 
$shipDates = [$ship_date1, $ship_date2]; 
// other dates as needed 

// OR, a much cleaner solution, append to the array 
$shipDates = []; 
$shipDates[] = 2; 
$shipDates[] = 5; 

//No matter how you fill up the array, this is how you get its maximum value 
$maxShipDate = max($shipDates); 

max實際上接受單個變量代替(例如max($ship_date1, $ship_date2);),但在陣列解決方案是更容易維護。

+0

我不知道每個訂單會有多少個發貨日期,所以我需要一種方法來自動收集1個發貨日期的無限數量。其次,因爲每個產品的發貨日期都是在一個循環中收集的,所以它們的變量是$ ship_date。我正在考慮類似 foreach($ ship_date as $ key => $ value){ $ string = $ value。','; } 但我不確定這是否正確。 – Jolo

0

確定在我的foreach產品循環之前,我添加了這個; $ deliverydatearray = array(); 它創建一個新的(空)陣列,我叫$ deliverydatearray

在我的foreach產品循環中,我加了這個; $ deliverydatearray [] = $ delivery_datep; ,它將我的產品特定交貨日期($ delivery_datep)添加到我的數組中。

在foreach產品循環關閉後,我可以訪問我的數組中的變量。例如,只是打印數組的內容是這樣完成的; print_r($ deliverydatearray); 看起來像這樣; 陣列 ( [0] => 2017年1月28日 [1] => 2017年1月23日 )