Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:2维数组排序_Php_Arrays_Sorting - Fatal编程技术网

PHP:2维数组排序

PHP:2维数组排序,php,arrays,sorting,Php,Arrays,Sorting,我只想问一下如何按列对2D数组进行排序? 这是我的阵列: $sort\u arr由行和列表示: $sort\u arr[$row][$column] 在我的列索引3中,数据是净销售额,我想将其按净销售额(即列索引3)降序输出 我会把它放在这里: $size_sort = sizeof($sort_arr); for($a=0;$a<$size_sort;$a++){ $tabletr2 .= "<tr class='con'> <td align=

我只想问一下如何按列对2D数组进行排序? 这是我的阵列:

$sort\u arr
由行和列表示:
$sort\u arr[$row][$column]

在我的列索引3中,数据是净销售额,我想将其按净销售额(即列索引3)降序输出

我会把它放在这里:

$size_sort = sizeof($sort_arr);
for($a=0;$a<$size_sort;$a++){
    $tabletr2 .= "<tr class='con'>
        <td align='center' > ".$rank." </td>      
        <td align='left'> ".$sort_arr [$a][$col2]." </td>      
        <td align='left'> ".$sort_arr [$a][$col2+1]." </td>      
        <td align='right'> ".$sort_arr [$a][$col2+2]." </td>
        <td align='right'> ".$sort_arr [$a][$col2+3]." </td>
        <td align='right'> ".$sort_arr [$a][$col2+4]." % </td>
        <td align='right'> ".$sort_arr [$a][$col2+5]." </td>
    </tr>";

}
$size\u sort=sizeof($sort\u arr);
对于($a=0;$a),您可以使用以下代码

$sort_arr[0][0]=“a”;
$sort_arr[0][1]=“b”;
$sort_arr[0][2]=“c”;
$sort_arr[0][3]=“d”;
$sort_arr[0][4]=“e”;
$sort_arr[0][5]=“f”;
$sort_arr[0][6]=“g”;
$sort_arr[0][7]=“h”;
$sort_arr[1][0]=“h”;
$sort_arr[1][1]=“k”;
$sort_arr[1][2]=“z”;

对于($i=0;$i使用
usort
函数对数组进行排序。可以将列索引保存在会话变量中,如下所示:

foreach($sort_arr as $key => $value){
    $tempColumnArr[$key]=$v[$column];
}
array_multisort($tempColumnArr, SORT_DESC, $sort_arr );  
函数cmp($a,$b)
{
$col\u index=isset($会话['sort\u col\u index'])?$会话['sort\u col\u index']:0;
if(isset($a[$COLU index])&isset($b[$COLU index]))
{
//列索引在两个数组中都有效。您可以在此处比较数据。
如果($a<$b)
返回-1;
否则,如果($a>$b)
返回1;
其他的
返回0;
}
其他的
返回0;
}
//设置索引列
$\会话['col\u sort\u index']=3;
//对数组排序
usort($sort_arr,“cmp”);
//显示输出
$size\u sort=sizeof($sort\u arr);

对于($a=0;$a,您可以使用array_multisort,也可以使用2D数组:

首先,从一列中创建一个临时数组

您可以对整个数组进行如下排序:

foreach($sort_arr as $key => $value){
    $tempColumnArr[$key]=$v[$column];
}
array_multisort($tempColumnArr, SORT_DESC, $sort_arr );  
在变量$column中,您可以设置要按哪个列排序的数字

<?php
$sort_arr[0][0] = 'a';
$sort_arr[0][1] = 'b';
$sort_arr[0][2] = 'c';
$sort_arr[0][3] = 'd';
$sort_arr[0][4] = 'e';
$sort_arr[0][5] = 'f';


$size_sort = sizeof($sort_arr);
$col2 =0;
for($a=0;$a<$size_sort;$a++){

    $temp = $sort_arr;

    unset($temp[$a][0]);
    unset($temp[$a][1]);
    unset($temp[$a][2]);    


    $temp= array_reverse($temp[$a],true);

    $tabletr2 .= "<tr class='con'>
    <td align='center' > ".$rank." </td>      
    <td align='left'> ".$sort_arr [$a][$col2]." </td>      
    <td align='left'> ".$sort_arr [$a][$col2+1]." </td>      
    <td align='right'> ".$sort_arr [$a][$col2+2]." </td>

    <td align='right'> ".$temp[$col2]." </td>
    <td align='right'> ".$temp[$col2+1]." </td>
    <td align='right'> ".$temp[$col2+2]." </td>
    </tr>";

}
你可以玩下面的把戏


如何在将数据放入数组之前对其进行排序(例如,按数据库查询排序)?数组从何而来?数据库?如果是的话,我建议使用数据库查询。否则,可能这是有用的?不。它不是从数据库来的。@Yassi要让您使用自定义函数查看
usort
,我只是颠倒顺序。我想按列索引3对它进行排序
<?php
$sort_arr[0][0] = 'a';
$sort_arr[0][1] = 'b';
$sort_arr[0][2] = 'c';
$sort_arr[0][3] = 'd';
$sort_arr[0][4] = 'e';
$sort_arr[0][5] = 'f';


$size_sort = sizeof($sort_arr);
$col2 =0;
for($a=0;$a<$size_sort;$a++){

    $temp = $sort_arr;

    unset($temp[$a][0]);
    unset($temp[$a][1]);
    unset($temp[$a][2]);    


    $temp= array_reverse($temp[$a],true);

    $tabletr2 .= "<tr class='con'>
    <td align='center' > ".$rank." </td>      
    <td align='left'> ".$sort_arr [$a][$col2]." </td>      
    <td align='left'> ".$sort_arr [$a][$col2+1]." </td>      
    <td align='right'> ".$sort_arr [$a][$col2+2]." </td>

    <td align='right'> ".$temp[$col2]." </td>
    <td align='right'> ".$temp[$col2+1]." </td>
    <td align='right'> ".$temp[$col2+2]." </td>
    </tr>";

}