请讲解一下这段排序的原理,特别是引用赋值那里是怎么回事,谢谢。
//按照name的长度排序,id从1开始;
<?php
$arr = array(
array('id' => 0, 'name' => '12'),
array('id' => 0, 'name' => 'ada'),
array('id' => 0, 'name' => 'asdfsdf'),
array('id' => 0, 'name' => '10sdf'),
array('id' => 0, 'name' => 'aasdfbc')
);
foreach($arr as $key=>$value) {
$long[$key] = strlen($value['name']);
}
array_multisort($long,SORT_ASC,$arr);
$i = 1;
foreach($arr as &$value){
$value['id']=$i;
$i++;
$arr[]+$value;
}
谢邀(虽然你没要请我(┬_┬))。
首先你要搞懂什么是 array_multisort()
PHP array_multisort
当然,你看看就得了,看不明白是正常的。
那么 我用简洁的语言讲一下 什么是array_multisort()
我们清楚的看到 上面有array1 array2 array3.....(sorting order,sorting type先不说)
array1,我们把它看作是编号
array2,array3....我们把他看作数组。
当我们使用array_multisort的时候,实际上array1,array2,array3... 中的所有元素就一一对应了
强调一遍,是一一对应!!!(所以,不允许出现数组元素不一样的情况)
然后,排列array1,后面的array2 array3...就跟随着array1进行排列。array1就是他们的id。
不知道我说清楚了没有?