对数组进行排序并在之后删除部分数据

时间:2012-02-04 15:33:19

标签: php sorting

我有一个名为$myarray的二维数组,我使用var_dump($myarray),它给了我以下内容:

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

我想获得以下输出:

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

所以我尝试使用substr($myarray[0][0], 8, 1)substr($myarray[1][0], 8, 1)substr($myarray[2][0], 8, 1)substr($myarray[3][0], 8, 1)来获取值3,2,1,4,以便使用它来排序数组到上面的顺序然后删除$myarray[0][0]$myarray[1][0]$myarray[2][0]$myarray[3][0]这些是每行中的“PAY0000 ..”元素,但我不知道如何正是要实现这一点,任何专家都可以帮助我吗?任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

//Extract sort key
$tmp=array();
foreach($myarray as $m) $tmp[$m[0]]=array($m[1],$m[2]);

//Sort array
ksort($tmp);

//Create output
foreach($tmp as $m) echo $m[0].' '.$m[1];

一些意见:

  • 您可以按PAY00000nXY排序而不提取n
  • 代码假定您需要的数组不仅仅是打印出来,否则可能效率低下

答案 1 :(得分:0)

假设您的数组已分配给变量$foo

$values = array();

foreach ( $foo as $bar ) {  
    foreach ( $bar as $val ) {  
        $values[] = $val[1] . ' ' . $val[2];
    }  
} 

然后,您将拥有数组$values,其中包含您需要的值。