2016-01-28 76 views
0

我有一個數組,看起來像這樣,它是數據庫選擇操作的結果。在php中獲取數組的結果

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [name] => shamonsha 
      [username] => sham1s670 
      [password] => 5hYZJPu3s/oAE7KbFfgsvQfX4/GCvnK1MpR0bIbWWxroUgLb+E3M7/AFyJNcZ9WirkAGCe6JBofh54dOPENdrg== 
      [email] => [email protected] 
      [mobile_number] => 7736527089 
      [address] => hk 
      [date] => 24 Dec 2015 01:32:53 
      [active] => 1 
      [commission] => 25 
      [agent_id] => 1 
      [ticket_number] => ETS263B0PT10469 
      [refund_amount] => 700 
      [date_of_cancel] => 28-Jan-2016 
     ) 

    [1] => Array 
     (
      [id] => 2 
      [name] => shamonsha 
      [username] => sham1s670 
      [password] => 5hYZJPu3s/oAE7KbFfgsvQfX4/GCvnK1MpR0bIbWWxroUgLb+E3M7/AFyJNcZ9WirkAGCe6JBofh54dOPENdrg== 
      [email] => [email protected] 
      [mobile_number] => 7736527089 
      [address] => hk 
      [date] => 24 Dec 2015 01:32:53 
      [active] => 1 
      [commission] => 25 
      [agent_id] => 1 
      [ticket_number] => ETS311B0PT10470 
      [refund_amount] => 700 
      [date_of_cancel] => 28-Jan-2016 
     ) 

    [2] => Array 
     (
      [id] => 3 
      [name] => shamonsha 
      [username] => sham1s670 
      [password] => 5hYZJPu3s/oAE7KbFfgsvQfX4/GCvnK1MpR0bIbWWxroUgLb+E3M7/AFyJNcZ9WirkAGCe6JBofh54dOPENdrg== 
      [email] => [email protected] 
      [mobile_number] => 7736527089 
      [address] => hk 
      [date] => 24 Dec 2015 01:32:53 
      [active] => 1 
      [commission] => 25 
      [agent_id] => 1 
      [ticket_number] => ETS788B0PT10472 
      [refund_amount] => 395 
      [date_of_cancel] => 28-Jan-2016 
     ) 

    [3] => Array 
     (
      [id] => 4 
      [name] => shamonsha 
      [username] => sham1s670 
      [password] => 5hYZJPu3s/oAE7KbFfgsvQfX4/GCvnK1MpR0bIbWWxroUgLb+E3M7/AFyJNcZ9WirkAGCe6JBofh54dOPENdrg== 
      [email] => [email protected] 
      [mobile_number] => 7736527089 
      [address] => hk 
      [date] => 24 Dec 2015 01:32:53 
      [active] => 1 
      [commission] => 25 
      [agent_id] => 1 
      [ticket_number] => ETS562B0PT10471 
      [refund_amount] => 395 
      [date_of_cancel] => 28-Jan-2016 
     ) 

    [4] => Array 
     (
      [id] => 5 
      [name] => shamonsha 
      [username] => sham2s7b8 
      [password] => dN0Br+3D86pGTAhlvOJ4OD6YH1KVHL/SkfYOu71Do7OCxrRnMIq9CLVWX7mpTnJso1pYxVwvjzFWo1a1GVq+8Q== 
      [email] => [email protected] 
      [mobile_number] => 7736527089 
      [address] => jk 
      [date] => 24 Dec 2015 01:33:20 
      [active] => 1 
      [commission] => 0 
      [agent_id] => 2 
      [ticket_number] => ETS562B0PT10471 
      [refund_amount] => 395 
      [date_of_cancel] => 28-Jan-2016 
     ) 

) 

由此我想顯示ticket_amountrefund_amountdate_of_cancel像這樣 例如,每個用戶名:

Username:sham1s670 
    ticket-no:ETS263B0PT10469 ,refund-amount:700, cancel-data:28-Jan-2016 
    ticket-no:ETS263B0PT10461 ,refund-amount:500, cancel-data:28-Jan-2016 
    ticket-no:ETS263B0PT10462 ,refund-amount:200, cancel-data:28-Jan-2016 

Username:sham1s674 
    ticket-no:ETS263B0PT10462 ,refund-amount:700, cancel-data:28-Jan-2016 
    ticket-no:ETS263B0PT10468 ,refund-amount:600, cancel-data:28-Jan-2016 
    ticket-no:ETS263B0PT10469 ,refund-amount:200, cancel-data:28-Jan-2016 

這裏是我試過的代碼

$i=0; 
foreach($result as $value) 
{ 
    $old = $value['username']; 
    if($old==$value['username']) 
    { 
     if($i==0){ 
      echo 'Username'.$value['username']; 
      echo '<br>'; 
     } 
     echo "TIcket-no".$value['ticket_number'].'Refund-amound'.$value['refund_amount'].'Cancel-date'.$value['date_of_cancel']; 

     $i++; 
    } 
    else 
    { 
     $old=''; 
     $i=0; 
    } 
} 

但沒」給我預期的結果?

+0

什麼預期和實際結果? – GordonM

回答

0

它不是得到所要的結果,因爲$舊絕不會像$值「用戶名」(你永遠不啓動),hense總是引發其他選項。

您必須重寫用戶查詢和組,或者對結果進行排序,他們已經被解析,以配合門票

未經測試的用戶後:

<?php 

    $data = array(); 
    $output = false; 

    // this first foreach could be done on db fetch rows instead 
    foreach ($result as $value) { 

     $data[$value['username']][] = 'TIcket-no ' . $value['ticket_number'] . ', Refund-amound ' . $value['refund_amount'] . ', Cancel-date ' . $value['date_of_cancel']; 

    } 

    foreach($data as $username => $list) { 

    $output .= '<p>Username ' . $username . '<br>'; 
    $output .= implode('<br>', $list); 
    $output .= '</p>'; 

    } 

    echo $output; 

?> 

**更新每個請求**

添加用戶名(仍未經測試)

<?php 

    $data = array(); 
    $output = false; 

    // this first foreach could be done on db fetch rows instead 
    foreach ($result as $value) { 

     if (!isset($data[$value['username']]['name'])) { 
     $data[$value['username']]['name'] = $value['name']; 
     } 
     $data[$value['username']]['data'][] = 'TIcket-no ' . $value['ticket_number'] . ', Refund-amound ' . $value['refund_amount'] . ', Cancel-date ' . $value['date_of_cancel']; 

    } 

    foreach($data as $username => $dataset) { 

    $output .= '<p>Name: ' . $dataset['name'] . '<br>'; 
    $output .= 'Username: ' . $username . '<br>'; 
    $output .= implode('<br>', $dataset['data']); 
    $output .= '</p>'; 

    } 

    echo $output; 

?> 
+0

它的工作,還有一個問題,我希望結果與'name'而不是用戶名,但問題是相同的名稱可能會出現不同的用戶名。 –

+0

那麼如何修改上面的答案與名稱? –

+0

查看編輯答案 – Tom

0

試試這個(未經測試!),假設你的用戶名

$old=''; 
foreach($result as $value) 
{ 
    if($old==$value['username']) 
    { 
     echo "TIcket-no".$value['ticket_number'].'Refund-amound'.$value['refund_amount'].'Cancel-date'.$value['date_of_cancel']; 

    } 
    else 
    { 

     echo 'Username'.$value['username']; 
     echo '<br>'; 
    } 
    $old = $value['username']; 
} 
+0

如果所有的用戶名沒有排序,這是行不通的:user1,user2,user2,user1 – DanX

+0

你是對的,忘記提及了! – Sebastianb

0

排序結果你可以用一個新的數組的結果進行排序。

像這樣:

<?php 
$NewTab = array(); 
foreach($results as $val) { 
    $NewTab[$val["username"]][] = $val; 
} 

foreach($NewTab as $username => $entries) { 
    echo "Username:", $username; 
    foreach($entries as $entry) { 
     echo "ticket-no: ", $entry["ticket_amount"]; 
     echo ", refund-amount: ", $entry["refund_amount"]; 
     echo ", date_of_cancel: ", $entry["date_of_cancel"]; 
    } 
}