배열 의 관련 처리 함수

1. 배열 의 키, 값 조작 함수
2. 통계 배열 요소 의 개수 와 유일 성
3. 반전 함수 로 배열 의 함 수 를 처리 합 니 다.
4. 배열 의 정렬 함수
5. 분할, 합병, 분해 와 결합 배열
6. 배열 과 데이터 구조
7. 기타 유용 한 배열 처리 함수
1. 배열 의 키, 값 조작 함수
array_values();
용도: 배열 의 모든 값 을 되 돌려 줍 니 다.
형식: array arrayvalues ( array input )
array_keys();
용도: 배열 의 모든 키 이름 을 되 돌려 줍 니 다.
형식: array arraykeys(array input[,mixed search_value [,bool strict]])   그 중 searchvalue 가 비어 있 으 면 이 값 의 키 이름 만 되 돌려 줍 니 다.
in_array();
용도: 배열 에 어떤 값 이 있 는 지 확인 합 니 다.
형식: bool inarray (mixed needle, array haystack [, bool strict]) 에서 strict 매개 변수: 유형 일치 여부
array_flip();
용도: 배열 의 키 와 값 을 교환 합 니 다.
형식: array arrayflip(array trans)
array_reverse()
용도: 단원 순서 가 반대 되 는 그룹 을 되 돌려 줍 니 다.
형식: array arrayreverse ( array array [, bool preserve_keys] )    하면, 만약, 만약...keys 가 TRUE 이면 원래 키 이름 을 유지 합 니 다.
사례: $arr = ['rose','lily','xiaoxue','jack','xiaoming','jack'];
/ ,
$result =array_keys($arr);
print_r($result);

// ,
$result = array_values($arr);
print_r($result);

// in_array() 。$arr = ['jpg','png','gif'];
// $result = in_array('jacky',$arr);
// var_dump($result);

if(in_array('jackok',$arr)){
    echo 'jack $arr ';
}else{
    echo 'jack $arr ';
}

//
$brr = array_flip($arr);
print_r($brr);

//
$arr = ['rose','lily','xiaoxue','jack','xiaoming','ajack'];
print_r(array_reverse($arr,true));

2. 통계 배열 요소 의 개수 와 유일 성
count();
용도: 배열 의 단원 수 나 대상 의 속성 개 수 를 계산 합 니 다.
사례:$arr = ['rose','lily','xiaoxue','jack','xiaoming','ajack'];
//
echo count($arr);


array_count_values();
용도: 배열 의 모든 값 이 나타 나 는 횟수 를 통계 합 니 다.
array_unique();
용도: 배열 에서 중복 되 는 값 제거
사례:<?php
$arr = ['a','b','a','c','d','c','a','b'];

//
$brr = array_count_values($arr);

//  
$crr = array_unique($arr);
print_r($crr);   

결과:Array
(
    [a] => 3
    [b] => 2
    [c] => 2
    [d] => 1
)
Array
(
    [0=> a
    [1=> b
    [3=> c
    [5=> d
)

3. 반전 함수 로 배열 의 함 수 를 처리 합 니 다.
array_filter();
용도: 반전 함수 로 배열 의 셀 을 걸 러 냅 니 다.
형식: array arrayfilter(array input [,callback callback])
설명: input 배열 의 모든 값 을 콜 백 함수 에 순서대로 전달 합 니 다.
  • callback 함수 가 TRUE 로 되 돌아 오 면 input 배열 의 현재 값 은 되 돌아 오 는 결과 배열 에 포 함 됩 니 다.배열 의 키 이름 은 변 하지 않 습 니 다.
  • 콜백 함수 가 제공 되 지 않 으 면 arrayfilter () 는 input 의 모든 등 값 이 FALSE 인 항목 을 삭제 합 니 다.

  • 사례 1: 비 어 있 지 않 음!empty <?php
    include 'db.php';
    $sql = "select * from bbs_content limit 1";
    $data = select($sql)[0];
    echo '<pre>';

    //
    $result = array_filter($data,'myfunc');

    function myfunc($x)
    {
        return !empty($x);
    }

    print_r($result);

    결과:Array
    (
        [id] => 1
        [pid] => 4
        [uid] => 1
        [title] => 
        [content] =>

        [edittime] => 1398212373
        [posttime] => 1398212373
        [visittimes] => 1
        [cost] => 10
        [ip] => 2130706433
        [isopen] => 1
    )

    사례 2 (위의 결과 의 반 례): 빈 empty//
    $result = array_filter($data,'myfunc');

    function myfunc($x)
    {
        return empty($x);
    }

    print_r($result);

    결과:Array
    (
        [pic] =>
        [keywords] =>
        [description] =>
        [ishot] => 0
        [isjinghua] => 0
        [istop] => 0
        [allowlevel] => 0
        [needreply] => 0
        [inbox] => 0
    )

    사례 3:$arr = [0,1,2,3,true,false,null];

    $result = array_filter($arr,'fun');

    function fun($a)
    {
        if($a){
            return true;
        }else{
            return false;
        }
    }

    print_r($result);

    사례 3 의 간소화:
    $result = array_filter($arr,function($x){ return $x;});
    print_r($result);

    결 과 는 모두:Array
    (
        [1=> 1
        [2=> 2
        [3=> 3
        [4=> 1
    )

    array_walk();
    용도: 배열 의 모든 구성원 에 게 사용자 함수 적용
    형식: bool arraywalk(array &array, callback funcname[,mixed userdata])
    설명: 성공 하면 TRUE 로, 실패 하면 FALSE 로 돌아 갑 니 다.
               사용자 정의 함수 funcname 을 array 배열 의 모든 단원 에 적용 합 니 다.전형 적 인 상황 에서 funcname 은 두 개의 인 자 를 받 아들 입 니 다.array 매개 변수의 값 은 첫 번 째 이 고, 키 이름 은 두 번 째 입 니 다.선택 가능 한 매개 변수 userdata 를 제공 하면 세 번 째 매개 변수 로 callback funcname 에 전 달 됩 니 다. 
               array_walk () 는 array 내부 배열 지침 의 영향 을 받 지 않 습 니 다.array_walk () 는 포인터 의 위 치 를 상관 하지 않 고 전체 배열 을 옮 겨 다 닙 니 다. 
    사례: <?php
    $arr = ['apple','li','banana','xigua','taozi'];
    echo '<pre>';

    //
    array_walk($arr,"myfun");

    function myfun(&$v,$k)
    {
        $v .= 'lai 2 jin';
    }

    print_r($arr);

    array_walk($arr,'fun','abc');

    function fun(&$v,$k,$u)
    {
        $v.=$u;
    }
    print_r($arr);
    결과:Array
    (
        [0=> applelai 2 jin
        [1=> lilai 2 jin
        [2=> bananalai 2 jin
        [3=> xigualai 2 jin
        [4=> taozilai 2 jin
    )
    Array
    (
        [0=> applelai 2 jinabc
        [1=> lilai 2 jinabc
        [2=> bananalai 2 jinabc
        [3=> xigualai 2 jinabc
        [4=> taozilai 2 jinabc
    )

    의문: array 매개 변수의 값 은 첫 번 째 이 고, 키 는 두 번 째 입 니 다.왜 출력 키 이름 이 색인 아래 표 시 됩 니까?
    array_map(); 
    용도: 반전 함 수 를 주어진 배열 의 단원 에 작용 합 니 다.
    형식: array arraymap ( callback callback, array arr1 [, array ...] )
    설명: arraymap () 는 배열 을 되 돌려 줍 니 다. 이 배열 은 arr 1 의 모든 단원 이 callback 작용 을 거 친 후의 단원 을 포함 합 니 다.콜백 이 받 아들 인 매개 변수 수 는 array 에 전달 해 야 합 니 다.map () 함수 의 배열 수 는 일치 합 니 다.
    사례:
    <?php
    $arr = [10,100,20,60,50,60];
    $brr = [11,21,31,41,51,61,71];

    //  
    $result = array_map('myfun',$arr);

    function myfun($x)
    {
        return $x += 10;
    }

    echo '<pre>';
    print_r($result);
    $result  = array_map('fun',$arr,$brr);
    function fun($x,$y)
    {
        return $x + $y;
    }
    print_r($result);

     
    결과:Array
    (
        [0=> 20
        [1=> 110
        [2=> 30
        [3=> 70
        [4=> 60
        [5=> 70
    )
    Array
    (
        [0=> 21
        [1=> 121
        [2=> 51
        [3=> 101
        [4=> 101
        [5=> 121
        [6=> 71
    )

    4. 배열 의 정렬 함수
    sort -- 배열 정렬 (오름차 순)
    rsort -- 배열 역방향 정렬 (내림차 순)
    usort --  사용자 정의 비교 함 수 를 사용 하여 배열 의 값 을 정렬 합 니 다.
    사례: <?php
    $arr = [10,100,20,60,50,60];
    echo '<pre>';
    /*
    // ( )
    sort($arr);
    // ( )
    rsort($arr);

    print_r($arr);
    */


    usort($arr,'myfun');

    function myfun($a,$b)
    {
       retrun $a-$b;
    }
    print_r($arr);

    결과:Array
    (
        [0=> 10
        [1=> 20
        [2=> 50
        [3=> 60
        [4=> 60
        [5=> 100
    )

    asort -- 배열 을 정렬 하고 색인 관 계 를 유지 합 니 다 (관련 배열 정렬)
    arsort --  배열 을 역방향 으로 정렬 하고 색인 관 계 를 유지 합 니 다. 
    uasort --  사용자 정의 비교 함수 가 배열 을 정렬 하고 색인 관 계 를 유지 합 니 다.
    사례:<?php
    header("content-type:text/html;charset=utf-8");
    $users = ['user1' => 'xiongda','user2' => 'xiaohei','user3'=>'xibobai'];
    echo '<pre>';
    //
    // asort($users);

    //
    // arsort($users);

    // ,
    uasort($users,'myfun');

    function myfun($a,$b)
    {
        if($a > $b){
            return 1;
        }
        if($a < $b){
            return -1;
        }
        if($a == $b){
            return 0;
        }
    }
    print_r($users);

    결과:Array
    (
        [user2=> xiaohei
        [user3=> xibobai
        [user1=> xiongda
    )

    ksort -- 배열 을 키 이름 으로 정렬 합 니 다.
    krsort -- 배열 을 키 이름 에 따라 역방향 으로 정렬 합 니 다.
    uksort --  사용자 정의 비교 함 수 를 사용 하여 배열 의 키 이름 을 정렬 합 니 다.
    사례:<?php
    header("content-type:text/html;charset=utf-8");
    $users = ['user6' => 'xiongda','user2' => 'xiaohei','user1'=>'xibobai'];

    //
    ksort($users);

    //
    krsort($users);

    //  
    uksort($users,'myfun');

    function myfun($a,$b)
    {
        if($a > $b){
            return 1;
        }
        if($a < $b){
            return -1;
        }
        if($a == $b){
            return 0;
        }
    }
    echo '<pre>';

    print_r($users);

    결과:
    Array (
        [user1] => xibobai
        [user2] => xiaohei
        [user6] => xiongda
    )

    natsort --  '자연 정렬' 알고리즘 으로 배열 정렬
    natcasesort --  '자연 정렬' 알고리즘 으로 배열 에 대해 대소 문자 순 서 를 구분 하지 않 습 니 다. 
    array_multisort -- 여러 배열 이나 다 차원 배열 을 정렬 합 니 다.
    사례:<?php
    $arr = ['image123','Image102','image120','Image1202','image1231'];

    echo '<pre>';
    sort($arr);

    print_r($arr);
    echo '<hr>';
    //
    natsort($arr);
    print_r($arr);
    echo '<hr>';

    //
    natcasesort($arr);
    print_r($arr);

    결과: Array
    (
        [0=> Image102
        [1=> Image1202
        [2=> image120
        [3=> image123
        [4=> image1231
    ) ASCII
    Array
    (
        [0=> Image102
        [1=> Image1202
        [2=> image120
        [3=> image123
        [4=> image1231
    ) ASCII
    Array
    (
        [0=> Image102
        [2=> image120
        [3=> image123
        [1=> Image1202
        [4=> image1231
    )

     
    sort 와 natsort 의 비교: sort 비트 별로 정렬 <?php //image i
    $arr = ['image123','image102','image120','image1202','image1231'];

    echo '<pre>';
    sort($arr);

    print_r($arr);
    echo '<hr>';
    //
    natsort($arr);
    print_r($arr);

    결과:Array
    (
        [0=> image102
        [1=> image120
        [2=> image1202
        [3=> image123
        [4=> image1231
    )
    Array
    (
        [0=> image102
        [1=> image120
        [3=> image123
        [2=> image1202
        [4=> image1231
    )

     
    array_multisort -- 여러 배열 이나 다 차원 배열 을 정렬 합 니 다.<?php
    include 'db.php';
    $sql = 'select regtime,username,money,email from bbs_user limit 3';
    $data = select($sql);

    echo '<pre>';
    // print_r($data);

    foreach($data as $v){
        $email[] = $v['email'];
        $username[] = $v['username'];
        $regtime[]=$v['regtime'];
    }

    // print_r($email);
    // print_r($username);

    //
    array_multisort($username,SORT_DESC,$regtime,SORT_ASC,$email,SORT_ASC,$data);
    print_r($data);

    결과:Array
    (
        [0=> Array
            (
                [regtime] => 1397632974
                [username] => jackyok
                [money] => 100
                [email] => [email protected]
            )
     
        [1=> Array
            (
                [regtime] => 1397632773
                [username] => jack
                [money] => 100
                [email] => 50377203@qq.com
            )
     
        [2=> Array
            (
                [regtime] => 1397633371
                [username] => alibaba
                [money] => 100
                [email] => 50377203@qq.com
            )
     
    )

     5. 분할, 합병, 분해 와 결합 배열
    array_slice -- 배열 에서 한 단락 꺼 내기  <?php
    $arr = ['a','b','c','d','e','f'];
    // $result = array_slice($arr,3);
    $result = array_slice($arr,-4,-1);

    var_dump($result);
    array(3) { [0]=> string(1) "c" [1]=> string(1) "d" [2]=> string(1) "e" }
    array_splice --  배열 의 일부분 을 제거 하고 다른 값 으로 대체 하 다.  <?php
    $arr = ['a','b','c','d','e','f'];

    // $brr = array_splice($arr,1,1,'x');
    // $brr = array_splice($arr,1);
    // $brr = array_splice($arr,-1);

    // $brr = array_splice($arr,1,1);
    // $brr = array_splice($arr,1,-1);

    // $brr = array_splice($arr,-3,1);
    // $brr = array_splice($arr,-3,-1,['x','y']);
    $brr = array_splice($arr,-3,-1,array(array('a','b')));
    echo '<pre>';
    print_r($arr);
    echo '<hr>';
    print_r($brr);
    Array (     [0] => a     [1] => b     [2] => c     [3] => Array         (             [0] => a             [1] => b         )       [4] => f ) Array (     [0] => d     [1] => e )
    array_combine --  하나의 배열 을 만 들 고 하나의 배열 의 값 을 키 이름 으로 하고 다른 배열 의 값 을 값 으로 합 니 다.  <?php
    $arr = ['a','b','c','d'];
    $brr = ['huanggua','mangguo','taozi','boluo'];

    // , ,
    $crr = array_combine($arr,$brr);
    echo '<pre>';
    print_r($crr);
    Array (     [a] => huanggua     [b] => mangguo     [c] => taozi     [d] => boluo )
    array_merge -- 하나 이상 의 배열 을 합 칩 니 다. <?php
    $arr = array('xiaorui',10=>'enzhu','jingjing','user1'=>'minghui','caojie');
    $brr = array('zhangtao','hongli',10=>'fengtao','henian','user1'=>'haijing');

    // ,
    $crr = array_merge($arr,$brr);

    echo '<pre>';
    print_r($crr);
    Array (     [0] => xiaorui     [1] => enzhu     [2] => jingjing     [user1] => haijing     [3] => caojie     [4] => zhangtao     [5] => hongli     [6] => fengtao     [7] => henian )
    array_intersect -- 계산 배열 의 교 집합 
    array_diff -- 계산 배열 의 차 집합  <?php
    $arr = array('xiaorui','enzhu','jingjing','haijing','caojie');
    $brr = array('zhangtao','enzhu','fengtao','henian','haijing');

    //
    // $crr = array_intersect($arr,$brr);

    //
    $crr = array_diff($arr,$brr);
    echo '<pre>';
    print_r($crr);

    6. 배열 과 데이터 구조<?php
    $brr = array('zhangtao','enzhu','fengtao','henian','haijing');

    //
    // $result = array_pop($brr);

    // ( ) 
    // $result = array_push($brr,'shenchao');


    //  
    // $result = array_shift($brr);

    //  
    // $result = array_unshift($brr,array('cenghao','gaolaoshi'));

    echo '<pre>';
    print_r($brr);
    print_r($result);

    array_rand --  배열 에서 하나 이상 의 단원 을 무 작위 로 꺼 냅 니 다.  <?php
    $arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];

    //  
    $keys = array_rand($arr,3);
    print_r($keys);


    foreach($keys as $v){
        echo $arr[$v].'<br>';
    }

     
    shuffle -- 배열 을 흐 트 러 뜨 립 니 다.<?php
    $arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];

    //shuffle ―
    shuffle($arr);
    print_r($arr);
    echo $arr[0].'<br>';
    echo $arr[1].'<br>';
    echo $arr[2];

    //   
    // ( )  ( ) 
    $brr = range(1,54,3);
    echo '<pre>';
    print_r($brr);

    좋은 웹페이지 즐겨찾기