English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP를 사용하여 2차원 배열의 특정 키를 정렬하는 방법

이 글은 PHP가 이차원 배열의 특정 키를 정렬하는 방법에 대해 설명합니다. 여러분과 공유하고, 다음과 같이 구체적으로 설명합니다:

/**
 * 쿼리 결과 집합을 정렬합니다.
 * @access public
 * @param array $list 쿼리 결과
 * @param string $field 정렬할 필드 이름
 * @param string $sortby 정렬 유형 (asc 정확 정렬 desc 역정렬 nat 자연 정렬)
 * @return array
 */
  function list_sort_by($list, $field, $sortby = 'asc')
  {
    if (is_array($list))
    {
      $refer = $resultSet = array();
      foreach ($list as $i => $data)
      {
        $refer[$i] = &$data[$field];
      }
      switch ($sortby)
      {
        case 'asc': // 정렬
          asort($refer);
          break;
        case 'desc': // 역정렬
          arsort($refer);
          break;
        case 'nat': // 자연 정렬
          natcasesort($refer);
          break;
      }
      foreach ($refer as $key => $val)
      {
        $resultSet[] = &$list[$key];
      }
      return $resultSet;
    }
    return false;
  }
/**
 * 예제
 * 2차원 배열의 id 키 값으로 내림차순으로 정렬하려면 어떻게 해야 합니까?(也就是id越大的排在越前)?
 */
$list = array(
  0 => array(
    'id' => 1,
    'name' => '첫째'
  ),
  1 => array(
    'id' => 3,
    'name' => '셋째'
  ),
  2 => array(
    'id' => 2,
    'name' => '둘째'
  ),
  3 => array(
    'id' => 4,
    'name' => '네트째'
  ),
);
//답변
$new_list = list_sort_by($list, 'id', 'desc');
print_r($new_list);

실행 결과는 다음과 같습니다:

Array
(
  [0] => Array
    (
      [id] => 4
      [name] => 넷째
    )
  [1] => Array
    (
      [id] => 3
      [name] => 셋째
    )
  [2] => Array
    (
      [id] => 2
      [name] => 둘째
    )
  [3] => Array
    (
      [id] => 1
      [name] => 첫째
    )
)

PHP 관련 내용에 대한 더 많은 정보를 원하는 독자는 사이트의 특집을 확인할 수 있습니다: 《PHP 배열(Array) 작업 기술大全》、《PHP 기본 문법 초보 교본》、《PHP 연산 및 연산자 사용 요약》、《php 객체 지향 프로그래밍 초보 교본》、《PHP 네트워크 프로그래밍 기술 요약》、《php 문자열(string) 사용 요약》、《php+mysql 데이터베이스 작업 초보 교본》 및 《php 일반 데이터베이스 작업 기술 요약》

이 문서에서 설명된 내용이 여러분의 PHP 프로그래밍에 도움이 되길 바랍니다.

언급: 이 문서의 내용은 인터넷에서 가져왔으며, 저작권자가 소유하고 있으며, 인터넷 사용자가 자발적으로 기여하고 자체적으로 업로드한 내용입니다. 이 사이트는 소유권을 가지지 않으며, 인공적인 편집을 하지 않았으며, 관련 법적 책임을 부담하지 않습니다. 저작권 문제가 의심되는 내용이 있다면, notice#w로 이메일을 보내 주세요.3codebox.com(보내실 때, #을 @으로 변경해 주세요. 신고를 하시고, 관련 증거를 제공해 주시면, 사이트가 의심스러운 저작권 내용을 즉시 삭제합니다。)

추천