2014-02-27 34 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