简体   繁体   English

如何将输出的数组分组

[英]How can I sort the outputted array into groups

My outputted array list is showing this; 我的输出数组列表显示了这一点; 在此处输入图片说明

I want to make it sort like: 我想让它像这样:

Imran Omer
Imran Omer
sumair
sumair
sumair
sumair
sumair
wrewr
wrewr
wrewr
wrewr
wrewr

How can I sort it like this? 我该如何排序?

This is the code I am using; 这是我正在使用的代码;

if (!in_array($a['sid'],$leave_sids))
                {
                    $struck_off_list_bit .= '
                        <tr>
                            <td>'.$a['sid'].'</td>
                            <td><a href="school_id.php?action=preview_id_card&sid='.$a['sid'].'">'.$a['student_name'].'</a></td>
                            <td>'.$date.'</td>
                            <td>'.$student_class.'</td>
                            <td style="background: #'.$bg_color.'">'.$leave_submitted.'</td>
                        </tr>
                    ';
                }

Seems like you're looking for usort() . 似乎您在寻找usort()

First define a function such as 首先定义一个函数,例如

function sortByStudent($a, $b) {
    return $a['student_name'] - $b['student_name'];
}

Then, call it on your $a array: 然后,在$a数组上调用它:

usort($a, 'sortByStudent');

PHP documentation for usort 用于usort的PHP文档

You need to use array_multisort() function, your code should be like this code: 您需要使用array_multisort()函数,您的代码应类似于以下代码:

<?php
$students = array(
    array('sid' => '38', 'student_name' => 'wrewr'),
    array('sid' => '2', 'student_name' => 'Imran Omer'),
    array('sid' => '36', 'student_name' => 'sumair'),
    array('sid' => '2', 'student_name' => 'Imran Omer'),
    array('sid' => '36', 'student_name' => 'sumair'),
    array('sid' => '38', 'student_name' => 'wrewr'),
    array('sid' => '36', 'student_name' => 'sumair'),
);
$new_array = array();
foreach ($students as $key => $row) {
    $new_array[$key] = $row['student_name'];
}
array_multisort($new_array, SORT_ASC, $students);

print_r($students);
?>

another option 另外一个选项

function array_sort($arr, $key, $type = 'asc')
{
    $keys = $new_array = array();
    foreach ($arr as $k => $v) {
        $keys[$k] = $v[$key];
    }

    if ($type == 'asc') {
        asort($keys);
    } else {
        arsort($keys);
    }

    reset($keys);

    foreach ($keys as $k => $v) {
        $new_array[$k] = $arr[$k];
    }
    return $new_array;
}

usage array_sort($a,'student_name') 用法array_sort($a,'student_name')

You can use GROUP BY clause in your query. 您可以在查询中使用GROUP BY子句。 It will automatically group all the results 它将自动将所有结果分组

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM