为了账号安全,请及时绑定邮箱和手机立即绑定

如何按值对PHP中的数组进行排序?

如何按值对PHP中的数组进行排序?

PHP
慕村9548890 2023-05-26 09:24:18
如果有人可以帮助我,我将非常感激。我的代码:$product_var_tpl = array(                        'name' => $product['name'].(isset($product['attributes']) ? ' - '.$product['attributes'] : ''),                        'unit_price' => Tools::displayPrice($product_price, $this->context->currency, false),                        'price' => Tools::displayPrice($product_price * $product['quantity'], $this->context->currency, false),                        'quantity' => $product['quantity'],                        'reference' => $seller_name,                        'customization' => array()                    );我想按字母顺序按“参考”对这个数组进行排序。我试过这个:usort($product_var_tpl, function($a, $b) {    return $a['reference'] - $b['reference'];});但结果为 null 或空。默认情况下输出是:Referance     |   Product name | Unite price |  Qty  |  Pricetestshop2     |   pere         | 42,00       |  0.5  | 21,00 testshoptwo   |   portocale    | 21,00       |  1    | 21,00     irinatestshop |   qiwi         | 34,00       |  0.5  | 17,00 irinatestshop |   Banane       | 12,00       | 1     | 12,00 如果我使用“usort”,我只会得到 4 个空行
查看完整描述

1 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

请排序$product_var_tpl_list,不是$product_var_tpl。


以下是示例代码。


$array = array(       // $product_var_tpl_list

        array(        // $product_var_tpl 1

            'name' => 'b',

            'reference' => 'bbb'

            ),

        array(        // $product_var_tpl 2

            'name' => 'a',

            'reference' => 'aaa'

            ),

        array(        // $product_var_tpl 3

            'name' => 'd',

            'reference' => 'ddd'

            ),

        array(        // $product_var_tpl 4

            'name' => 'c',

            'reference' => 'ccc'

            ),

        array(        // $product_var_tpl 5

            'name' => 'e',

            'reference' => 'eee'

            ),

        array(        // $product_var_tpl 6

            'name' => 'a',

            'reference' => 'www'

            )

    );


usort($array, function($a, $b) {

    return strcmp($a['reference'], $b['reference']);

});


print_r($array);

测试结果如下。


Array

(

    [0] => Array

        (

            [name] => a

            [reference] => aaa

        )


    [1] => Array

        (

            [name] => b

            [reference] => bbb

        )


    [2] => Array

        (

            [name] => c

            [reference] => ccc

        )


    [3] => Array

        (

            [name] => d

            [reference] => ddd

        )


    [4] => Array

        (

            [name] => e

            [reference] => eee

        )


    [5] => Array

        (

            [name] => a

            [reference] => www

        )


)


查看完整回答
反对 回复 2023-05-26
  • 1 回答
  • 0 关注
  • 110 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信