cari

Rumah  >  Soal Jawab  >  teks badan

php - Bagaimana untuk mengisih tatasusunan seperti ini?

**

按照content2排序

**

array(5) {
  [0]=>
  tatasusunan(2) {
    ["id"]=>
    rentetan(1) "2"
    ["content2"]=>
    rentetan(2) "XL"
  }
  [1]=>
  tatasusunan(2) {
    ["id"]=>
    rentetan(1) "1"
    ["content2"]=>
    rentetan(1) "L"
  }
  [2]=>
  tatasusunan(2) {
    ["id"]=>
    rentetan(1) "3"
    ["content2"]=>
    rentetan(3) "XXL"
  }
  [3]=>
  tatasusunan(2) {
    ["id"]=>
    rentetan(1) "4"
    ["content2"]=>
    rentetan(1) "L"
  }
  [4]=>
  tatasusunan(2) {
    ["id"]=>
    rentetan(1) "5"
    ["content2"]=>
    rentetan(2) "XL"
  }
}
怪我咯怪我咯2832 hari yang lalu382

membalas semua(6)saya akan balas

  • 阿神

    阿神2017-05-16 13:09:13

    Tatasusunan PHP berbilang dimensi menyusun tatasusunan

    /**
    * Sort array by filed and type, common utility method.
    * @param array $data
    * @param string $sort_filed
    * @param string $sort_type SORT_ASC or SORT_DESC
    */
    public function sortByOneField($data, $filed, $type)
    {
        if (count($data) <= 0) {
            return $data;
        }
        foreach ($data as $key => $value) {
            $temp[$key] = $value[$filed];
        }
        array_multisort($temp, $type, $data);
        return $data;
    }

    balas
    0
  • 習慣沉默

    習慣沉默2017-05-16 13:09:13

     $list = [
        ['id'=>1,'content1'=>'L'],
        ['id'=>2,'content1'=>'XL'],
        ['id'=>3,'content1'=>'XXL'],
        ['id'=>4,'content1'=>'M'],
        ['id'=>5,'content1'=>'LM'],
        ['id'=>6,'content1'=>'XXXL'],
    ];
        foreach ($list as $key => $value) {
            $data[$key] = $value['content1'];
        }
    
        array_multisort($data, SORT_ASC, $list);
        var_dump($list);

    balas
    0
  • 怪我咯

    怪我咯2017-05-16 13:09:13

    Tiada corak biasa dalam saiz baju, kan?

    balas
    0
  • 怪我咯

    怪我咯2017-05-16 13:09:13

    Hanya tulis jenis gelembung.
    Bagi L<XL<XXL<XXL, sediakan sahaja pemetaan peta sebagai perbandingan.

    Anda juga boleh menggunakan usort untuk menyesuaikan logik pengisihan. Rujukan:

    http://php.net/manual/zh/func...

    balas
    0
  • 高洛峰

    高洛峰2017-05-16 13:09:13

    <?php 
    $list = [
        ['id'=>1,'content'=>'L'],
        ['id'=>2,'content'=>'XL'],
        ['id'=>3,'content'=>'XXL'],
        ['id'=>4,'content'=>'M'],
        ['id'=>5,'content'=>'LM'],
        ['id'=>6,'content'=>'XXXL'],
    ];
    
    $size = [
        'XXXL' => 1,
        'XXL' => 2,
        'XL' => 3,
        'L' => 4,
        'M' => 5,
        'LM' => 6,
    ];
    
    $temp = array();
    foreach ($list as $key => $val) {
        $temp[$size[$val['content']]] = $val;
    }
    // print_r($temp);die;
    
    ksort($temp); // 从低到高  krsort 从高到低
    print_r($temp);
    ?>

    Saya hanya menulisnya secara santai, tidak pasti sama ada ini yang anda mahukan.

    balas
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-16 13:09:13

    $arr = [
        ["id" => "1", "content" => 'XL' ],
        ["id" => "2", "content" => 'L'],
        ["id" => "3", "content" => 'XXL' ],
    ];
    
    $rules = ['L'=>1, 'XL'=>2, 'XXL'=>3];
    
    usort($arr, function($a, $b) use ($rules) {
        return $rules[$a['content']] <=> $rules[$b['content']];
    });
    
    var_dump($arr);

    balas
    0
  • Batalbalas