首页  >  问答  >  正文

array_multisort($name,SORT_ASC,$age,SORT_DESC,$arr);这句只有$name有效,$age没有起效,那是否写上$age就显得多余了呢?


array_multisort($name,SORT_ASC,$age,SORT_DESC,$arr);这句只有$name有效,$age没有起效,那是否写上$age就显得多余了呢?

时不待我时不待我2650 天前2497

全部回复(15)我来回复

  • Rain

    Rain2018-07-18 12:42:51

    经过多次反复调试发现array_multisort函数的$arr参数所起到的作用相当于一种把前面参数所做的排序改变追加到
    $arr本体数组当中去,因为array_multisort函数是传值调用,前面的排序操作就是对副本的操作,$arr参数相当于一种
    再次赋值,保证了本体的改变。但也不能完全当成是再赋值操作,因为,当改变这个$arr参数为一个新的数组$newArr参数的时候
    系统会报错,由此可见,$arr参数所起到的作用类似于再赋值操作但又不是。

    回复
    0
  • Rain

    Rain2018-07-18 12:27:37

    不会显得多余。$name数组和$age数组是从二维数组$arr数组中分离出来的,
    如果仅仅使用sort()或者asort()函数对$name数组排序的话,改变的只是$name数组元素的
    顺序($name数组只是$arr数组里一部分的副本,副本的改变不会引起本体的改变),
    并不会引起原先的二维数组$arr的变化。所以如果是对多维数组进行排序,应该使用array_multisort函数,
    array_multisort() 可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。本例则是第二种根据某一维来对
    多维数组进行排序,array_multisort($name, SORT_ASC,$age,SORT_DESC,$arr)实现了对name属性列的排序,age属性列则
    会跟着做相应的排序。这样来说其实也可以写为array_multisort($name, SORT_ASC,$age,$arr),去掉SORT_DESC结果没有变化,因为是没有起到作用的
    ,默认只对第一个数组起作用,第二个会跟着第一个变化(当然这是针对多维数组的操作)。

    回复
    1
  • myfey

    myfey2017-11-27 14:48:53

    是的,,,

    你要觉得浪费你可以用asort排序啊

    回复
    0
  • CCIE

    CCIE2017-09-19 14:07:58

    array_multisort($name,SORT_ASC,$age,SORT_DESC,$arr);这句只有$name有效,$age没有起效,那是否写上$age就显得多余了呢?

    回复
    0
  • CCIE

    CCIE2017-09-19 14:07:46

    array_multisort($name,SORT_ASC,$age,SORT_DESC,$arr);这句只有$name有效,$age没有起效,那是否写上$age就显得多余了呢?

    回复
    0
  • CCIE

    CCIE2017-09-19 14:07:32

    array_multisort($name,SORT_ASC,$age,SORT_DESC,$arr);这句只有$name有效,$age没有起效,那是否写上$age就显得多余了呢?

    回复
    0
  • CCIE

    CCIE2017-09-19 14:07:17

    array_multisort($name,SORT_ASC,$age,SORT_DESC,$arr);这句只有$name有效,$age没有起效,那是否写上$age就显得多余了呢?

    回复
    0
  • CCIE

    CCIE2017-09-19 14:07:03

    array_multisort($name,SORT_ASC,$age,SORT_DESC,$arr);这句只有$name有效,$age没有起效,那是否写上$age就显得多余了呢?

    回复
    0
  • CCIE

    CCIE2017-09-19 14:06:53

    array_multisort($name,SORT_ASC,$age,SORT_DESC,$arr);这句只有$name有效,$age没有起效,那是否写上$age就显得多余了呢?

    回复
    0
  • CCIE

    CCIE2017-09-19 14:06:37

    array_multisort($name,SORT_ASC,$age,SORT_DESC,$arr);这句只有$name有效,$age没有起效,那是否写上$age就显得多余了呢?

    回复
    0
  • 取消回复