<?php
// 取得列的列表
foreach ($data as $key => $row) {
    $volume[$key]  = $row['volume'];
    $edition[$key] = $row['edition'];
}// 将数据根据 volume 降序排列,根据 edition 升序排列
// 把 $data 作为最后一个参数,以通用键排序
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
?> 
一直想不明白$data跟$volume的关系,这个函数内部的处理思路是怎样的?

解决方案 »

  1.   

    foreach  的明白。$data 2维数组,第一维是由很多row 组成;第2维,每个row 有两个元素,下标分别是:'volume' 和 ‘edition‘row1[volume],row1[edition]
    row2[volume],row2[edition]
    row3[volume],row3[edition]
    .
    .
    .
    然后 foreach 循环,把 第一列取出来,单独赋值给另一个数组,名字叫 volume( 和原来数组下标一个名字儿一,不矛盾)array_multisort 排序的时候,先按照第一个数组值排序,第一个数组值相同的情况下,按第二个。
    (不明白看manual)
      

  2.   

    array_multisort 是根据数组的自然顺序关联参与排序的数组的
    所以有无关联键是无关紧要的
    写成
    foreach ($data as $key => $row) { 
        $volume[$key]  = $row['volume']; 
        $edition[$key] = $row['edition']; 

    还是
    foreach ($data as $row) { 
        $volume[]  = $row['volume']; 
        $edition[] = $row['edition']; 

    结果是一样的
      

  3.   

    输入数组被当成一个表的列并以行来排序 - 这类似于 SQL 的 ORDER BY 子句的功能。
    第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话就按照下一个输入数组中相应值的大小来排序,依此类推。 
      

  4.   

    还是不明白,这个能用php模拟下么?
      

  5.   


    自定义一个php函数,实现系统的那个函数的功能
      

  6.   

    自定义一个php函数,实现系统的那个函数的功能