Heim  >  Artikel  >  Backend-Entwicklung  >  So sortieren Sie ein Array in PHP und lassen die Schlüsselwerte unverändert

So sortieren Sie ein Array in PHP und lassen die Schlüsselwerte unverändert

王林
王林Original
2020-09-28 13:20:405702Durchsuche

So sortieren Sie ein Array in PHP und lassen die Schlüsselwerte unverändert: Zuerst müssen wir die Schlüsselnamen aus dem Array herausnehmen und dann die Schlüsselnamen entsprechend den entsprechenden Schlüsselnamen sortieren, um sie zu bilden ein neues Array und geben Sie es zurück.

So sortieren Sie ein Array in PHP und lassen die Schlüsselwerte unverändert

Implementierungscode:

(Empfohlenes Tutorial: php-Video-Tutorial)

$data = array(
    1001 => array(
        'age' => 22,
        'name' => '鸠摩智'
    ),
    1007 => array(
        'age' => 21,
        'name' => '慕容复'
    ),
    1004 => array(
        'age' => 27,
        'name' => '乔帮主'
    )
);
//根据字段age对数组$data进行降序排列
$data = arraySort($data, "age", "desc" );
print_r($data);

/**
 * @desc arraySort php二维数组排序 按照指定的key 对数组进行自然排序
 * @param array $arr 将要排序的数组
 * @param string $keys 指定排序的key
 * @param string $type 排序类型 asc | desc
 * @return array
 */
function arraySort($arr, $keys, $type = 'asc')
{
    $keysvalue = $new_array = array();
    foreach ($arr as $k => $v) {
        $keysvalue[$k] = $v[$keys];
    }

    if ($type == 'asc') {
        natsort($keysvalue);
    }
    if ($type == 'desc') {
        natsort($keysvalue);
        $keysvalue = array_reverse($keysvalue, TRUE); // 将原数组中的元素顺序翻转,如果第二个参数指定为 true,则元素的键名保持不变
    }
    foreach ($keysvalue as $k => $v) {
        $new_array[$k] = $arr[$k];
    }
    return $new_array;
}

Hier können wir auch die ArraySort-Funktion vereinfachen, und das Verarbeitungsergebnis ist das gleiche:

/**
 * @desc arraySort php二维数组排序 按照指定的key 对数组进行自然排序
 * @param array $arr 将要排序的数组
 * @param string $keys 指定排序的key
 * @param string $type 排序类型 asc | desc
 * @return array
 */
function arraySort($arr, $keys, $type = 'asc')
{
    $keysvalue = $new_array = array();
    foreach ($arr as $k => $v) {
        $keysvalue[$k] = $v[$keys];
    }

    $type == 'asc' ? asort($keysvalue) : arsort($keysvalue);
    foreach ($keysvalue as $k => $v) {
        $new_array[$k] = $arr[$k];
    }
    return $new_array;
}

Ausgabeergebnis:

So sortieren Sie ein Array in PHP und lassen die Schlüsselwerte unverändert

Die Schlüsselnamen bleiben unverändert und das Implementierungsprinzip ist sehr einfach. Nehmen Sie zuerst die Schlüsselnamen heraus, sortieren Sie dann die Schlüsselnamen und weisen Sie dann den entsprechenden Schlüsselnamen Werte zu, um ein neues Array zu bilden und zurückzugeben Es.
Wie Sie sehen, verwenden wir hier hauptsächlich mehrere Kernsortierfunktionen von PHP.

asort() sortiert das assoziative Array in aufsteigender Reihenfolge nach Schlüsselwert.

arsort() sortiert das assoziative Array in absteigender Reihenfolge nach Schlüsselwert.

natsort() implementiert die „natürliche Sortierung“, also die Sortiermethode für Zahlen von 1 bis 9 und die Sortiermethode für Buchstaben von a bis z, wobei die kürzeren zuerst beginnen. Der Index des Arrays bleibt mit dem Zellenwert verknüpft.

Hinweis: Im natürlichen Sortieralgorithmus ist die Zahl 2 kleiner als die Zahl 10. In Computer-Sortieralgorithmen ist 10 kleiner als 2, da die erste Zahl in „10“ kleiner als 2 ist.

Verwandte Empfehlungen: php-Training

Das obige ist der detaillierte Inhalt vonSo sortieren Sie ein Array in PHP und lassen die Schlüsselwerte unverändert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn