2012-02-04 44 views
1

我有一個二維數組名爲$ myarray中,並在使用的var_dump($ myarray的)我,它給了我下面的:獲取指定outpot使用PHP二維數組

array(4) { [0]=> array(2) { [0]=> string(3) "EUR" [1]=> string(9) "43,543.23" } [1]=> array(2) { [0]=> string(3) "USD" [1]=> string(9) "13,432.34" } [2]=> array(2) { [0]=> string(3) "GBP" [1]=> string(8) "3,432.21" } [3]=> array(2) { [0]=> string(3) "CAD" [1]=> string(8) "2,321.34" } } 

但我所要的輸出是follwing格式:

Totals 
GBP 3,432.21 
USD 13,432.34 
EUR 43,543.23 
CAD 2,321.34 

我認爲我需要數組排序爲:

GBP 3,432.21 
USD 13,432.34 
EUR 43,543.23 
CAD 2,321.34 

,並添加「總計」,「」入陣,我可能是錯誤的,soanybody可以幫助我,任何幫助將不勝感激!我希望它以編程的方式完成!如何將數組$ myarray排序到預期的輸出?

回答

1

首先,不要添加任何與數組相關的非數據。你的字符串「Totals」不應該包含在你的數組中。如果你只是想輸出,我建議更好的方法來解決你的問題:

<?php 
    class MyMoney { 
     var $type; 
     var $value; 

     public function __toString() { 
     return $type." ".$value."\n";  
     } 
    } 

    $output="Totals:\n"; 
    // $data is an array of MyMoney objects 
    foreach($entry in $data) { 
     $output.= (string) $entry; 
    } 

    dump($output); 

我希望這可以幫助。

+0

絕對要走的路:將數據和功能保持在一起! (顯然這個命令不是強制性的) – xtofl 2012-02-04 15:24:08

2

你幾乎是正確的。

不要將「總計」添加到數組中。這不是數據,僅僅是裝飾。其餘的,我不會'轉儲'陣列,但例如從它的字符串。通常,不要更改您的數據,特別是出於輸出格式原因,您會發現自己在處理數據的下一個函數中刪除「總計」條目...:

另外,您想要控制迭代訂購;因此,你可以在需要的鍵,而不是該數組本身在迭代:

$output="Totals:\n"; 
foreach($currency in array("GBP","USD","EUR","CAD")) { 
    $entry=$data[$currency]; 
    $output.=$currency." ".$entry[1]."\n"; 
} 

dump($output); 

編輯 - 添加了一些關於訂購

1

我不知道這是否是你描述,但也許它可以可以使用您的情況:

$myArray = array(
     "title" => "Totals", 
     "data" => array(
       "GBP" => "3,432.21", 
       "USD" => "13,432.34", 
       "EUR" => "43,543.23", 
       "CAD" => "2,321.34" 
     ) 
); 

var_dump($myArray); 

輸出:

array(2) { 
    ["title"]=> 
    string(6) "Totals" 
    ["data"]=> 
    array(4) { 
    ["GBP"]=> 
    string(8) "3,432.21" 
    ["USD"]=> 
    string(9) "13,432.34" 
    ["EUR"]=> 
    string(9) "43,543.23" 
    ["CAD"]=> 
    string(8) "2,321.34" 
    } 
} 
+0

謝謝,但我希望它以編程的方式完成 – smith 2012-02-04 14:49:04

0
<?php 
$output = "Totals<br>"; 
foreach ($myarray as $value) 
{ 
    $output .= $value[0].' '.$value[1].'<br>'; 
} 
echo $output; 
?>