> 백엔드 개발 > PHP 튜토리얼 > PHP의 일부 배열

PHP의 일부 배열

不言
풀어 주다: 2023-03-24 18:02:01
원래의
1066명이 탐색했습니다.

이 글에서는 주로 PHP에 관한 몇 가지 배열을 소개하는데, 이는 특정 참조 가치가 있습니다. 이제 모든 사람과 공유합니다. 필요한 친구들이 참조할 수 있습니다.

데이터 구조 시뮬레이션

배열 뒤에 추가

array_push
$a=array("red","green");
array_push($a,"blue","yellow");
Array ( [0] => red [1] => green [2] => blue [3] => yellow )
로그인 후 복사

배열 앞에 추가

array_unshift
$a=array("a"=>"red","b"=>"green");
array_unshift($a,"blue");
Array ( [0] => blue [a] => red [b] => green )
로그인 후 복사

배열 이전 삭제

$a=array("a"=>"red","b"=>"green","c"=>"blue");
echo array_shift($a);
redArray ( [b] => green [c] => blue )
로그인 후 복사

배열 이후 삭제

$a=array("red","green","blue");
array_pop($a);
Array ( [0] => red [1] => green )
로그인 후 복사

php 기본 - 2차원 배열 정렬 array_multisort

2차원 배열이나 다차원 배열을 정렬하는 것은 일반적인 문제입니다. PHP에서는 특별한 다중 정렬이 있습니다. -차원 배열 정렬 함수는 아래와 같이 간략하게 소개됩니다.
array_multisort(array1, 정렬 순서, 정렬 유형, array2, array3..)는 여러 배열 또는 다차원 배열을 정렬하는 함수입니다.
array1 필수입니다. 입력 배열을 지정합니다.
정렬 순서 선택 사항. 정렬 순서를 지정합니다. 가능한 값은 SORT_ASC 및 SORT_DESC입니다.
정렬 유형 선택 사항. 정렬 유형을 지정합니다. 가능한 값은 SORT_REGULAR, SORT_NUMERIC, SORT_STRING입니다.
array2 선택사항. 입력 배열을 지정합니다.
array3 선택사항. 입력 배열을 지정합니다.
매개변수의 배열은 테이블 열로 처리되고 행별로 정렬됩니다. 이는 SQL의 ORDER BY 절 기능과 유사합니다. 첫 번째 배열은 정렬할 기본 배열입니다. 배열의 행(값)이 동일한지 비교하면

은 다음 입력 배열의 해당 값의 크기에 따라 정렬됩니다.
첫 번째 매개변수는 배열이고 각 후속 매개변수는 배열이거나 다음 정렬 순서 플래그 중 하나일 수 있습니다(정렬 플래그는 기본 정렬 순서를 변경하는 데 사용됩니다):
SORT_ASC - 기본값, 오름차순으로 정렬. (A-Z)
SORT_DESC - 내림차순으로 정렬합니다. (Z-A)
그런 다음 정렬 유형을 지정할 수 있습니다:
SORT_REGULAR - 기본값. 각 항목을 규칙적인 순서로 배열하세요.
SORT_NUMERIC - 각 항목을 숫자순으로 정렬합니다.
SORT_STRING - 각 항목을 알파벳순으로 정렬합니다.

    <?php  
        function my_sort($arrays,$sort_key,$sort_order=SORT_ASC,$sort_type=SORT_NUMERIC ){   
            if(is_array($arrays)){   
                foreach ($arrays as $array){   
                    if(is_array($array)){   
                        $key_arrays[] = $array[$sort_key];   
                    }else{   
                        return false;   
                    }   
                }   
            }else{   
                return false;   
            }  
            array_multisort($key_arrays,$sort_order,$sort_type,$arrays);   
            return $arrays;   
        }  
        $person =  array(  
                        array(&#39;id&#39;=>1,&#39;name&#39;=>&#39;fj&#39;,&#39;weight&#39;=>100,&#39;height&#39;=>180),  
                        array(&#39;id&#39;=>2,&#39;name&#39;=>&#39;tom&#39;,&#39;weight&#39;=>53,&#39;height&#39;=>150),  
                        array(&#39;id&#39;=>3,&#39;name&#39;=>&#39;jerry&#39;,&#39;weight&#39;=>120,&#39;height&#39;=>156),  
                        array(&#39;id&#39;=>4,&#39;name&#39;=>&#39;bill&#39;,&#39;weight&#39;=>110,&#39;height&#39;=>190),  
                        array(&#39;id&#39;=>5,&#39;name&#39;=>&#39;linken&#39;,&#39;weight&#39;=>80,&#39;height&#39;=>200),  
                        array(&#39;id&#39;=>6,&#39;name&#39;=>&#39;madana&#39;,&#39;weight&#39;=>95,&#39;height&#39;=>110),  
                        array(&#39;id&#39;=>7,&#39;name&#39;=>&#39;jordan&#39;,&#39;weight&#39;=>70,&#39;height&#39;=>170)  
                    );  
        var_dump($person);  
        $person = my_sort($person,&#39;name&#39;,SORT_ASC,SORT_STRING);  
        var_dump($person);   
        $person = my_sort($person,&#39;weight&#39;);  
        var_dump($person);  
    ?>
로그인 후 복사

예를 들어 다음 배열과 같습니다.
코드는 다음과 같습니다.

$users = array(
  array(&#39;name&#39; => &#39;tom&#39;, &#39;age&#39; => 20)
  , array(&#39;name&#39; => &#39;anny&#39;, &#39;age&#39; => 18)
  , array(&#39;name&#39; => &#39;jack&#39;, &#39;age&#39; => 22)
);
로그인 후 복사

연령별로 작은 것부터 큰 것 순으로 정렬하길 바랍니다. 저자는 두 가지 방법을 정리하여 여러분께 공유해 드렸습니다.
1. array_multisort를 사용하세요
이 방법을 사용하면 나이를 추출하여 1차원 배열로 저장한 후 나이별로 오름차순으로 정렬해야 합니다. 구체적인 코드는 다음과 같습니다.
코드는 다음과 같습니다.

$ages = array();
foreach ($users as $user) {
  $ages[] = $user[&#39;age&#39;];
}
로그인 후 복사
array_multisort($ages, SORT_ASC, $users);
로그인 후 복사


실행 후 $users는 정렬된 배열이므로 인쇄해서 볼 수 있습니다. 먼저 나이를 기준으로 오름차순으로 정렬한 후 이름을 기준으로 오름차순으로 정렬해야 하는 경우 방법은 위와 동일하며 최종 정렬 방법은 다음과 같습니다.
코드는 다음과 같습니다.


array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);
로그인 후 복사

여기서 핵심은 먼저 정렬할 키를 1차원 배열로 저장한 다음 array_multisort() 함수를 사용하여 키에 따라 배열을 정렬할 수 있다는 것입니다. 물론 여기에서 완전히 정렬할 수 있습니다

array_multisort() 함수는 적용할 수 없습니다.
이 효과는 foreach 순회를 통해서만 얻을 수도 있지만 PHP 개발자가 더 나은 방법을 제공했기 때문에 불필요한 문제를 줄일 수 있습니다.

PHP 2차원 배열 중복 제거 기능
PHP 배열에는 중복을 제거하는 array_unique() 함수가 내장되어 있지만 PHP의 array_unique 함수는 다차원 배열이 아닌 1차원 배열에만 적용됩니다. 배열

array_unique 함수

    function unique_arr($array2D,$stkeep=false,$ndformat=true)  
    {  
        // 判断是否保留一级数组键 (一级数组键可以为非数字)  
        if($stkeep) $stArr = array_keys($array2D);  
      
        // 判断是否保留二级数组键 (所有二级数组键必须相同)  
        if($ndformat) $ndArr = array_keys(end($array2D));  
      
        //降维,也可以用implode,将一维数组转换为用逗号连接的字符串  
        foreach ($array2D as $v){  
            $v = join(",",$v);   
            $temp[] = $v;  
        }  
      
        //去掉重复的字符串,也就是重复的一维数组  
        $temp = array_unique($temp);   
      
        //再将拆开的数组重新组装  
        foreach ($temp as $k => $v)  
        {  
            if($stkeep) $k = $stArr[$k];  
            if($ndformat)  
            {  
                $tempArr = explode(",",$v);   
                foreach($tempArr as $ndkey => $ndval) $output[$k][$ndArr[$ndkey]] = $ndval;  
            }  
            else $output[$k] = explode(",",$v);   
        }  
      
        return $output;  
    }  
$array2D=array(&#39;first&#39;=>array(&#39;title&#39;=>&#39;1111&#39;,&#39;date&#39;=>&#39;2222&#39;),&#39;second&#39;=>array(&#39;title&#39;=>&#39;1111&#39;,&#39;date&#39;=>&#39;2222&#39;),&#39;third&#39;=>array
(&#39;title&#39;=>&#39;2222&#39;,&#39;date&#39;=>&#39;3333&#39;));  
    print_r($array2D);  
    print_r(unique_arr($array2D,true));
로그인 후 복사

관련 권장 사항:

php 배열 함수 시퀀스 array_pop()은 배열의 마지막 요소를 삭제합니다

PHP 배열에 값을 할당하는 방법

위 내용은 PHP의 일부 배열의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿