php_二维数组排序
阿神
阿神 2017-04-10 15:27:00
[PHP讨论组]

请讲解一下这段排序的原理,特别是引用赋值那里是怎么回事,谢谢。
//按照name的长度排序,id从1开始;

 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;
    }
阿神
阿神

闭关修行中......

全部回复(2)
伊谢尔伦

谢邀(虽然你没要请我(┬_┬))。
首先你要搞懂什么是 array_multisort()
PHP array_multisort

当然,你看看就得了,看不明白是正常的。

那么 我用简洁的语言讲一下 什么是array_multisort()

    array_multisort(array1,sorting order,sorting type,array2,array3...)

我们清楚的看到 上面有array1 array2 array3.....(sorting order,sorting type先不说)
array1,我们把它看作是编号
array2,array3....我们把他看作数组。
当我们使用array_multisort的时候,实际上array1,array2,array3... 中的所有元素就一一对应了
强调一遍,是一一对应!!!(所以,不允许出现数组元素不一样的情况)
然后,排列array1,后面的array2 array3...就跟随着array1进行排列。array1就是他们的id。

    <?php
//这个就是array2
$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')

);
//这个是array1 换句话说,他就是数组的id,其他数组的排列是随着他的
foreach($arr as $key=>$value) {
    $long[$key] = strlen($value['name']);
}
//排序开始
array_multisort($long,SORT_ASC,$arr);
    $i = 1;
//剩下就是foreach了
    foreach($arr as &$value){   
        $value['id']=$i;
        $i++;
        $arr[] = $value;
    }

不知道我说清楚了没有?

高洛峰

/**

  • 二维数组根据字段进行排序

  • @params array $array 需要排序的数组

  • @params string $field 排序的字段

  • @params string $sort 排序顺序标志 SORT_DESC 降序;SORT_ASC 升序
    */

function arraySequence($array, $field, $sort = 'SORT_DESC')
{

$arrSort = array();
foreach ($array as $uniqid => $row) {
    foreach ($row as $key => $value) {
        $arrSort[$key][$uniqid] = $value;
    }
}
array_multisort($arrSort[$field], constant($sort), $array);
return $array;

}

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号