首页 >社区问答列表 >array_multisort($name,SORT_ASC,$age,SORT_DESC,$arr);这句只有$name有效,$age没有起效,那是否写上$age就显得多余了呢?

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


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

  • Rain
  • Rain     2018-07-18 12:42:51 15楼

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

    +0 添加回复

  • 回复
  • Rain
  • Rain     2018-07-18 12:27:37 14楼

    不会显得多余。$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结果没有变化,因为是没有起到作用的
    ,默认只对第一个数组起作用,第二个会跟着第一个变化(当然这是针对多维数组的操作)。

    +0 添加回复

  • 回复
  • CCIE
  • CCIE     2017-09-19 14:07:58 12楼

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

    +0 添加回复

  • 回复
  • CCIE
  • CCIE     2017-09-19 14:07:46 11楼

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

    +0 添加回复

  • 回复
  • CCIE
  • CCIE     2017-09-19 14:07:32 10楼

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

    +0 添加回复

  • 回复
  • CCIE
  • CCIE     2017-09-19 14:07:17 9楼

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

    +0 添加回复

  • 回复
  • CCIE
  • CCIE     2017-09-19 14:07:03 8楼

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

    +0 添加回复

  • 回复
  • CCIE
  • CCIE     2017-09-19 14:06:53 7楼

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

    +0 添加回复

  • 回复
  • CCIE
  • CCIE     2017-09-19 14:06:37 6楼

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

    +0 添加回复

  • 回复