array_multisort($name,SORT_ASC,$age,SORT_DESC,$arr);这句只有$name有效,$age没有起效,那是否写上$age就显得多余了呢?
Rain2018-07-18 12:42:51
经过多次反复调试发现array_multisort函数的$arr参数所起到的作用相当于一种把前面参数所做的排序改变追加到
$arr本体数组当中去,因为array_multisort函数是传值调用,前面的排序操作就是对副本的操作,$arr参数相当于一种
再次赋值,保证了本体的改变。但也不能完全当成是再赋值操作,因为,当改变这个$arr参数为一个新的数组$newArr参数的时候
系统会报错,由此可见,$arr参数所起到的作用类似于再赋值操作但又不是。
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结果没有变化,因为是没有起到作用的
,默认只对第一个数组起作用,第二个会跟着第一个变化(当然这是针对多维数组的操作)。
CCIE2017-09-19 14:07:58
array_multisort($name,SORT_ASC,$age,SORT_DESC,$arr);这句只有$name有效,$age没有起效,那是否写上$age就显得多余了呢?
CCIE2017-09-19 14:07:46
array_multisort($name,SORT_ASC,$age,SORT_DESC,$arr);这句只有$name有效,$age没有起效,那是否写上$age就显得多余了呢?
CCIE2017-09-19 14:07:32
array_multisort($name,SORT_ASC,$age,SORT_DESC,$arr);这句只有$name有效,$age没有起效,那是否写上$age就显得多余了呢?
CCIE2017-09-19 14:07:17
array_multisort($name,SORT_ASC,$age,SORT_DESC,$arr);这句只有$name有效,$age没有起效,那是否写上$age就显得多余了呢?
CCIE2017-09-19 14:07:03
array_multisort($name,SORT_ASC,$age,SORT_DESC,$arr);这句只有$name有效,$age没有起效,那是否写上$age就显得多余了呢?
CCIE2017-09-19 14:06:53
array_multisort($name,SORT_ASC,$age,SORT_DESC,$arr);这句只有$name有效,$age没有起效,那是否写上$age就显得多余了呢?
CCIE2017-09-19 14:06:37
array_multisort($name,SORT_ASC,$age,SORT_DESC,$arr);这句只有$name有效,$age没有起效,那是否写上$age就显得多余了呢?