0

これが私の配列です。saleref で並べ替えるにはどうすればよいですか?

Array
(
    [xml] => Array
        (
            [sale] => Array
                (
                    [0] => Array
                        (
                            [saleref] =>  12345
                            [saleline] =>   1
                            [product] => producta
                            [date] => 19/ 3/10
                            [manifest] =>       0
                            [qty] =>     1
                            [nextday] => 
                            [order_status] => 
                        )

                    [1] => Array
                        (
                            [saleref] =>  12344
                            [saleline] =>   1
                            [product] => productb
                            [date] => 18/ 3/10
                            [manifest] =>   11892
                            [qty] =>     1
                            [nextday] => 
                            [order_status] => 
                        )
4

4 に答える 4

5
function cmp($a, $b) {
    if ($a['saleref'] == $b['saleref']) {
        return 0;
    }
    return ($a['saleref'] < $b['saleref']) ? -1 : 1;
}

uasort($array['xml']['sale'], 'cmp');
于 2010-03-18T10:51:04.610 に答える
1

インデックスの関連付けを維持する必要がある場合は、uasort().

そうでなけれusort() ばうまくいくだろう

マニュアル コメントから持ち上げて微調整したコード例:

function sortSalesRef($a, $b) {

    $a = $a['saleref'];
    $b = $b['saleref'];

    if ($a == $b) {
        return 0;
    }

    return ($a < $b) ? -1 : 1;

}

usort($xml['xml']['sale'], 'sortSalesRef'); 
于 2010-03-18T10:52:00.357 に答える
0

たとえば、uasort()を使用して

スクリプト例:

$data = getData();
uasort($data['xml']['sale'], function($a, $b) {  return strcasecmp($a['saleref'], $b['saleref']); });
print_r($data);

function getData() {
return array(
  'xml' => array(
    'sale' => array (
      array(
        'saleref' => '12345',
        'saleline' => 1,
        'product' => 'producta',
        'date' => '19/ 3/10',
        'manifest' => 0,
        'qty' => 1,
        'nextday' => false,
        'order_status' => false
      ),

      array(
        'saleref' => '12344',
        'saleline' => 1,
        'product' => 'productb',
        'date' => '18/ 3/10',
        'manifest' => 11892,
        'qty' => 1,
        'nextday' => false,
        'order_status' => false
      )
    )
  )
);
}
于 2010-03-18T10:48:59.333 に答える
0
<?php
// Comparison function
function cmp($a, $b)
{
    if ($a == $b)
        {
            return 0;
        }
     return ($a < $b) ? -1 : 1;
}
$array = array('a' => 4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4);
print_r($array);
uasort($array, 'cmp');
print_r($array);
?>
于 2010-03-18T10:57:19.240 に答える