2014-02-27 76 views
0

我有一個foreach結構:PHP的字典式陣列和排序特定的鍵名

foreach($_POST as $name => $value) { 
    if($value && $value > 0){ // ensure we have a positive amount 
     $composite = explode("-", Replace($name, "ScheduleID_", "")); 
     $scheduleID = $composite[0]; 
     $thisUserID = $composite[1]; 
     $payPalEmail = $composite[2]; 
     $amount = $value; 

     $counter++; 
     $sum += $value; 
    } 
} 

我在我所有的變量得到正確的價值觀。在foreach裏面,我需要構建含有這4個值的數組:

  1. $ scheduleID
  2. $ thisUserID
  3. $ payPalEmail
  4. $量

...然後排序數組$ thisUserID。然後我需要知道如何構建foreach以正確迭代新數組並獲取每個值。

重要提示:每個$ scheduleID都是唯一的,但其他3個值有時會重複。

我想是這樣的,但不能讓它的工作權利:

$object["ScheduleID"] = $scheduleID 
$object["UserID"] = $thisUserID 
$object["PayPalEmail"] = $payPalEmail 
$object["Amount"] = $amount 

(然後執行$對象[「用戶名」]上的排序) - 我已經嘗試了不同的排序來自stackoverflow和php文檔的方案,但我必須做錯了什麼。

在此先感謝。

回答

0

你可以只准備在數組的foreach這樣的:

foreach($_POST as $name => $value) { 
    if($value && $value > 0){ // ensure we have a positive amount 
     $composite = explode("-", Replace($name, "ScheduleID_", "")); 
     $objects[$composite[0]] = array( 
      'UserID' => $composite[1], 
      'payPalEmail' => $composite[2] 
     ); 
     $amount = $value; 

     $counter++; 
     $sum += $value; 
    } 
} 
ksort($objects); 

隨後的foreach後,您可以通過ksort排序陣列。

+0

Toorion,我需要更多的細節。這是一直沒有爲我工作的ksort。請給出ksort和新foreach的確切代碼。謝謝。 – HerrimanCoder

+0

感謝您的編輯,但它仍然不存在。我嘗試了以下內容:foreach($ objects爲$ name => $ value){ \t foreach($ value as $ name2 => $ value2){ \t \t writeme(「$ name2 = $ value2」); \t} } - 它不按用戶ID排序,這是要求。而在你的ksort($對象)中,你不會告訴它按照UserID排序。請告訴我什麼是正確的ksort。謝謝。 – HerrimanCoder

+0

Ops,抱歉 - userId是uniq? – Toorion