Sıralama ilişkisel dizi PHP

2 Cevap php

İşte benim dizi var, nasıl saleref göre sıralamak mı?

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] => 
                        )

2 Cevap

Eğer maintain index association kullanmak gerekiyorsa uasort().

Aksi takdirde, usort() would work

Örnek kod, manuel yorumlardan kaldırdı ve tweaked:

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'); 

Örneğin ile uasort()

örnek komut:

$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
      )
    )
  )
);
}