>  기사  >  백엔드 개발  >  PHP에서 길이에 따라 배열 키를 정렬하고 키를 유지하는 방법은 무엇입니까?

PHP에서 길이에 따라 배열 키를 정렬하고 키를 유지하는 방법은 무엇입니까?

王林
王林원래의
2024-05-02 13:03:021010검색

uksort() 함수와 사용자 정의 비교 함수인 CompareKeyLengths를 사용하면 키 이름을 유지하면서 배열 키 이름의 길이에 따라 PHP 배열을 정렬할 수 있습니다. 비교 함수는 키 길이의 차이를 계산하고 uksort()가 배열을 정렬하는 기준에 따라 정수를 반환합니다. 또한 실제 사례에서는 필드 이름 길이를 기준으로 데이터베이스의 레코드를 정렬하는 방법을 보여줍니다.

PHP 中如何根据数组键名长度进行排序,保留键名?

배열 키 이름의 길이에 따라 PHP 배열을 정렬하는 방법(키 이름 유지)

PHP에서는 uksort() 함수를 사용하여 배열을 정렬할 수 있습니다. 배열 키 이름의 길이를 기준으로 정렬합니다. 이 함수는 두 개의 키 이름을 비교하고 키 길이의 차이를 나타내는 정수를 반환하는 콜백 함수를 매개 변수로 받아들입니다. uksort() 函数根据数组键名的长度对数组进行排序。该函数接受一个回调函数作为参数,该函数比较两个键名并返回一个整数,表示键名长度的差值。

排序代码:

<?php
function compareKeyLengths(string $key1, string $key2): int
{
    return strlen($key1) - strlen($key2);
}

$array = ['key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3'];

uksort($array, 'compareKeyLengths');

print_r($array);

输出:

Array
(
    [key1] => value1
    [key2] => value2
    [key3] => value3
)

如您所见,数组已根据键名长度进行排序,同时保留了键名。

实战案例:

这是一个将来自数据库的记录按字段名称长度排序的示例。

<?php
$records = [
    ['firstName' => 'John', 'lastName' => 'Doe'],
    ['firstName' => 'Jane', 'lastName' => 'Smith'],
    ['firstName' => 'Bob', 'lastName' => 'Johnson'],
];

uksort($records, 'compareKeyLengths');

foreach ($records as $record) {
    echo 'Name: ' . $record['firstName'] . ' ' . $record['lastName'] . PHP_EOL;
}

输出:

Name: Bob Johnson
Name: Jane Smith
Name: John Doe

注意:

  • 如果键名长度相等,uksort() 函数将保持原始顺序。
  • 如果需要降序排序,可以在比较函数中交换减法运算符(-+
  • 정렬 코드:
rrreee🎜출력:🎜rrreee🎜 보시다시피 배열은 키 이름을 유지하면서 키 길이를 기준으로 정렬되었습니다. 🎜🎜실제 사례:🎜🎜이것은 필드 이름 길이를 기준으로 데이터베이스의 레코드를 정렬하는 예입니다. 🎜rrreee🎜출력: 🎜rrreee🎜참고: 🎜
  • 키 길이가 동일하면 uksort() 함수 원래 순서를 유지합니다. 🎜
  • 내림차순으로 정렬해야 하는 경우 비교 함수에서 빼기 연산자(-+)를 바꿀 수 있습니다. 🎜🎜

위 내용은 PHP에서 길이에 따라 배열 키를 정렬하고 키를 유지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.