PHP:2维数组排序
我只想问一下如何按列对2D数组进行排序? 这是我的阵列: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=
$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>";
}