0

2D Array を列でソートする方法を知りたいのですが? これは私の配列です:

$sort_arr行と列で表される: $sort_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>";

}

みんなありがとう!

4

4 に答える 4

0

関数で配列をソートしますusort。次のように、列インデックスをセッション変数に保存できます。

function cmp($a, $b)
{
    $col_index = isset($_SESSION['sort_col_index']) ? $_SESSION['sort_col_index'] : 0;
    if(isset($a[$col_index]) && isset($b[$col_index]))
    {
        // the column index is valid in both array. You can compare your data here.
        if ($a < $b)
           return -1;
        else if ($a > $b)
           return 1;
        else
           return 0;
    }
    else
        return 0;
}

// set the index column
$_SESSION['col_sort_index'] = 3;

// sort your array
usort($sort_arr, "cmp");

// display output
$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>";

    }
于 2013-07-12T10:04:44.067 に答える
0

2D 配列にも array_multisort を使用できます。

最初に、1 つの列から一時的な配列を作成します

そして、次のように配列全体をソートできます。

変数 $column には、ソートする列の番号を設定します

foreach($sort_arr as $key => $value){
    $tempColumnArr[$key]=$v[$column];
}
array_multisort($tempColumnArr, SORT_DESC, $sort_arr );  
于 2013-07-12T10:10:29.583 に答える
-1

以下のコードを使用できます

$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';

for($i=0; $i<count($sort_arr);$i++)
{       
    $sort_arr[$i] = array_reverse($sort_arr[$i]);

}

echo '<pre>';
print_r($sort_arr);
echo '</pre>';
于 2013-07-12T09:51:51.080 に答える