PHP 배열 작업 상세 설명[옮 겨 다 니 기,포인터,함수 등]

본 논문 의 사례 는 PHP 배열 작업 을 총 결 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
배열
데 이 터 는 요소 로 구성 되 고 요 소 는 키 와 값 으로 구성 된다.
배열 분류
연관 배열
관련 배열,요소 의 아래 표 시 는 요소 의 값 과 논리 적 인 관 계 를 가지 고 있 으 며 관련 배열 이 라 고 합 니 다.키 와 값 사이 에 관리 가 존재 한 다 는 뜻 이다.

$a1 = array('name' => '   ', 'age' => 34);  
색인 배열
색인 배열,요소 의 값 과 아래 표 시 는 논리 적 관계 가 없 으 며,아래 표 시 는 값 색인 위치 만 표시 합 니 다.

$a1 = array('   ',34);
배열 옮 겨 다 니 기
배열 을 옮 겨 다 니 려 면 각 요소 의 정보(키 의 정보 와 값 의 정보)를 순서대로 받 아야 합 니 다.핵심 은 배열 의 요소 포인터 에 있 습 니 다.
배열 의 요소 포인터
모든 배열 안에 내부 가 특정한 요 소 를 가리 키 는 지침 이 있다.
기본적으로 이 지침 은 배열 의 첫 번 째 요 소 를 가리 키 고 있 습 니 다.
각 배열 은 하나의 포인터 만 있 고 동시에 하나의 요소 만 가리 킬 수 있 기 때문에 포인터 의 위 치 는 이미 존재 하 는 요소 일 수 있 습 니 다.동시에 포인터 가 배열 의 외부(배열 의 끝[마지막 바깥쪽]을 가리 킬 수 있 습 니 다.바로 불법 위치 입 니 다.

배열
포인터 가 가리 키 는 요소 에 대한 정 보 를 얻 고 바늘 을 움 직 이 며 순환 구조 에 맞 춰 완성 할 수 있 습 니 다.
php 제공

  • 포인터 가 가리 키 는 요소 의 정 보 를 얻 습 니 다.

  • 포인터 이동 가능
  • current(); 현재 포인터 가 원 소 를 가리 키 는 값 을 가 져 옵 니 다.
    key(); 현재 원 소 를 가리 키 는 키 가 져 오기
    next(); 배열 을 이동 할 수 있 는 포인터
    prev(); 원 소 를 위로 이동 합 니 다.
    reset(); 포인터 초기 화(첫 번 째 요소 로 이동)
    end(); 가장 오른쪽 원소 로 이동
    배열 말단,가장 오른쪽 요소 오른쪽,불법 범위
    next(),prev();배열 지침 을 불법 위치 로 이동 할 수 있 습 니 다.
    
    //$students    
    end($students);
    next($students);
    var_dump(current($students)); //false;
    
    reset($students);
    prev($students);
    var_dump(current($students)); //false;
    
    불법 위치 로 이동 했다 면 상대 적 으로 이동 해 만회 할 수 없 으 며,이 때 는 특정 위치 로 강제 이동 해 야 한다.reset(),end()
    
    //$students    
    end($students);
    next($students);
    prev($students);
    var_dump(current($students)); //false;
    
    reset($students);
    prev($students);
    next($students);
    var_dump(current($students)); //false;
    
    foreach()
    foreach(); 구조
    배열 을 옮 겨 다 니 는 구조 이자 순환 구조 이다.
    
    foreach ( $arr as $key => $val ) {
      //   
    }
    
    요소 의 키 가 의미 가 없다 면 생략 키 정 보 를 사용 할 수 있 습 니 다.
    
    foreach ( $arr as $val ) {}
    
    주의:
    foreach 는 배열 포인 터 를 이동 합 니 다.또한 foreach 가 옮 겨 다 니 면 포인 터 는 불법 위치(배열 끝)에 있 습 니 다.
    foreach 는 배열 요 소 를 옮 겨 다 닐 때 요소 포인터 가 초기 화 되 기 때문에 포인터 가 가리 키 는 위 치 는 foreach 의 옮 겨 다 니 는 데 영향 을 주지 않 습 니 다.
    foreach 는 여러 번 반복 할 때 원래 배열 의 복사 본 은 원래 배열 에서 직접 옮 겨 다 니 는 것 이 아니 라 옮 겨 다 니 는 과정 에서 옮 겨 다 니 는 배열 을 수정 하면 옮 겨 다 니 는 결과 에 영향 을 주지 않 습 니 다.
    foreach 에서 사용 하 는 요소 값 을 저장 하 는 변 수 는 원 배열 에 영향 을 주지 않 습 니 다.
    값 에 대한 작업 은 인용 전달 을 지원 합 니 다.원래 배열 의 값 을 바 꿀 수 있 습 니 다.
    변수 앞 에&기 호 를 추가 하면 됩 니 다.

    foreach 흐름 도

    foreach 도 순환 구조 로 break 와 continue 의 통 제 를 받는다.
    each()
    하나 하 나 를 편력 하 다
    현재 요소 정 보 를 얻 을 수 있 습 니 다.(키 와 값),포인터 아래로 이동
    요소 정 보 를 얻 고'관련 및 색인 배열'을 되 돌려 줍 니 다.
    그 중:
    관련 배열 부분.
    
    key =>       
    value =>     
    색인 배열 부분
    
    0 =>      
    1 =>     
    
    $arr = array(10, 12, 200);
    
    $arr2 = array(
      'name' => 'zf',
      'age' => 20
    );
    
    var_dump(each($arr));
    var_dump(each($arr2));
    
    첫 번 째 항목 만 옮 겨 다 니 기
    each 는 요소 정 보 를 얻 을 수 있 고 포인 터 를 이동 할 수 있 기 때문에 foreach 를 제외 한 수 동 배열 의 옮 겨 다 니 기 에 매우 적합 합 니 다.
    each+while+list 의 반복 배열
    each 포인터 가 불법 이면 each 는 false 로 돌아 갑 니 다.each 의 반환 값 을 판단 합 니 다.
    
    //  eaech, each     $element
    //   $element     (        )
    
    while($element = each($sutdents)) {
      echo 'Key:', $element[0];
      echo '$nbsp;';
      echo 'Value:', $element[1];
      echo '<br/>';
    }
      
    list()
    옮 겨 다 니 는 순환 체 내 에서 요소 아래 표 시 된 변 수 를 직접 사용 할 수 있 습 니 다.요소 아래 표 시 된 변 수 를 저장 하고 요소 값 을 저장 하 는 변 수 를 직접 사용 합 니 다.
    하나의 함수,하나의 배열 을 통 해 여러 변 수 를 동시에 초기 화 할 수 있 습 니 다.
    
      
    $student = array('   ', '    ', '  ');
    
    list($a, $b, $c) = $student; //        ,      list        //    es6       
    
    var_dump($a, $b, $c);
    
    list 색인 배열 적용
    
    $student = array('   ', '    ', '  ');
    
    while (list($k, $v) = each($student)) {
      
      echo 'Key:', $k;
      
      echo '&nbsp;';
      
      echo 'Value:', $v;
      
      echo '<br/>';
      
    };
    
    배열 복사 요소 포인터
    원본 배열 포인터 가 합 법 적 이면:
    배열 을 복사 할 때 포인터 위치 도 대상 배열 로 복 사 됩 니 다.
    
    $a1 = array('a', 'b', 'c');
    
    $a2 = $a1;
    var_dump(current($a2)); // a
    
    echo '<hr/>';
    
    $a1 = array('a', 'b', 'c');
    next($a1);
    
    $a2 = $a1;
    var_dump(current($a2)); // b
    
    원본 배열 포인터 가 불법 이면:
    새 배열 의 포인터 초기 화;기본 포인터 로 초기 화 합 니 다.
    
    $a1 = array('a', 'b', 'c');
    
    end($a1);
    
    next($a1);
    
    $a2 = $a1;
    
    var_dump(current($a2)); // a
    
    foreach 와 배열 포인터 관계
    foreach 는 포인터 의 영향 에 불확실 성 이 있 으 므 로 foreach 가 옮 겨 다 니 는 포인터 위치 에 의존 하지 마 십시오.조작 이 필요 하 다 면 초기 화(reset()가 필요 합 니 다.
    배열 은 배열 에서 직접 조작 하 는 것 이 아니 라 원래 배열 의 복사 이다.
    php 내부 최적화,쓰기 시 복사(COW-copy on write).원본 배열 에 쓰기 동작 을 실행 하지 않 으 면 복사 과정 이 발생 하지 않 습 니 다.원본 배열 에 쓰기 동작 을 할 때 이 복사 과정 이 발생 합 니 다.
    질문

    foreach 가 옮 겨 다 닐 때 는 복사 이지 만 원래 배열 을 조작 한 후에 발생 합 니 다.쓰기 전에 옮 겨 다 니 는 작업 은 바로 원래 배열 입 니 다.쓰기 작업 이 발생 하면 진실 한 복사 가 됩 니 다.foreach 가 옮 겨 다 니 는 배열 은 원래 배열 과 같 지 않 습 니 다.따라서 원래 배열 의 지침 은 계속 변 하지 않 습 니 다.유일한 예 외 는 마지막 순환 에서 배열 을 작성 하 는 것 입 니 다.이 때 복사 전에 지침 이 불법 이면 결 과 는 리 셋 됩 니 다.
    실제 작업 에서 처리 가 완료 되면 즉시 reset()를 권장 합 니 다.
    위의 문 제 는$value 에 만 적 용 됩 니 다.요소 값 을 저장 하 는 변 수 는 값 전달 의 경우 입 니 다.참조 전달 이 라면 원 배열 을 직접 조작 하 십시오!
    $key 는 전달 을 참조 할 수 없습니다.
    array 함수
    상용 함수
    array_fill(시작 위치,길이,내용);/고정 값 으로 일부 수량의 요 소 를 채 웁 니 다.
    count(); //배열 요소 의 개 수 를 통계 합 니 다.재 귀 통 계 를 지원 합 니 다.
    range(시작 범위,끝 범위);/범위 에 따라 배열 요 소 를 만 듭 니 다.
    array_merge(); //여러 배열 을 통합 합 니 다.
    
    //            ,        ,    .
    //       .           .
    array_merge(range('a','z'),range('A','Z'));
    
    array_rand(배열,선택 한 수량[기본 하나]);/무 작위 로 배열 에서 일부 요 소 를 얻 습 니 다.요소 값 이 아 닌 무 작위 로 표 시 됩 니 다.또한 여러 요소 라면 아래 표 시 된 크기 에 따라 정렬 합 니 다.
    shuffe(); //요소 순 서 를 흐 트 러 뜨리 고 매개 변 수 는 참조 전달 입 니 다.
    
    //       4     
    
    //            
    $chars = array_merge(range('a','z'),range('A','Z'));
    
    //   4     
    
    $rand_keys = array_rand($chars, 4);
    
    //   
    shuffle($rand_keys);
    
    //          
    foreach ($rand_keys as $v) {
      echo $chars[$v];
    }
      
    키 조작
    array_value(); //모든 요소 의 모든 값 을 가 져 옵 니 다.
    array_key(); //모든 요소 의 모든 키 를 가 져 옵 니 다.
    array_combine(); // 두 개의 배열 을 이용 하여,그 중 하 나 는 키 이 고,다른 하 나 는 새로운 배열 에 가치 가 있다.
    in_array(); //배열 에 어떤 값 이 있 는 지 판단 합 니 다.
    array_key_exists(); //어떤 요소 가 있 는 지 여부 입 니 다.
    array_search(); // 배열 에서 어떤 요소 값 을 찾 고 다음 표 시 를 찾 습 니 다.false 로 돌아 갈 수 없습니다.
    array_filp(); // 원소 의 키 와 값 을 교환 합 니 다.
    병합 분할
    '+'호
    
    $a1 = array(1, 2, 3, 4);
    $a2 = array(6, 7, 8);
    var_dump($a1+$a2); //         ,        
    
    
    array_merge($arr1, $arr2); // 여러 배열 을 통합 합 니 다.
    array_chunk($arr, len); //하위 배열 의 길이 에 따라 원 배열 을 나 눕 니 다.
    explode(); //하나의 문자열 을 특정한 문자 에 따라 여러 부분 으로 나 눕 니 다.
    implode(); //배열 요소 의 값 을 특정한 문자 로 연결 할 수 있 습 니 다.
    
    $arr = array('aa', 'bb');
    
    echo $arr = implode('-', $arr); // aa-bb
    
    print_r(explode('-', $arr));
    
    compact(); 여러 변 수 를 합 쳐 하나의 배열 로 합 칩 니 다.그 중에서 변수의 이름 은 배열 의 아래 표 시 됩 니 다.변수의 값 은 값 입 니 다.매개 변 수 는 변수 이름 입 니 다.
    
    $width = 2;
    $height = 10;
    
    $arr = compact('width', 'height');
    
    extact(); 변 수 를 하나의 변수 로 나 누 어 줍 니 다.모든 요 소 는 하나의 변수 이다.다음은 변수 이름 이 고 값 은 변수 값 입 니 다.문자열 의 아래 표 시 됩 니 다.
    현재 변수 이름 이 존재 하면 기 존 변수 값 을 바 꾸 는 동작 이 발생 합 니 다.이것 은 기본 동작 입 니 다.extact(),두 번 째 매개 변 수 를 통 해 수정 할 수 있 습 니 다.기본 값 은 EXTR 입 니 다.OVERWRITE 는 재 작성//EXTRSKIP 는 생략 을 표시 합 니 다.

    array_diff(배열 1,배열 2);/배열 1 에서 배열 2 와 다른 요 소 를 얻 습 니 다.-차 집합 값 판단.
    array_intersect(배열 1,배열 2);/배열 1 에서 배열 2 와 같은 요 소 를 가 져 옵 니 다.-교 집합.
    array_map($callback, $arr1); // 배열 안의 모든 요 소 를 한 번 조작 합 니 다.각각 특정한 함 수 를 호출 하여 한 번 호출 합 니 다.
    함수 가 사용자 정의 라면...
    매개 변수 수신 요소 값 과 반환 값 이 있어 야 합 니 다.
    
    $a1 = array(10, 20, 3);
    
    function x2 ( $item ) {
      return $item * 3;
    }
    
    $arr = array_map('x2', $a1);
    
    var_dump($arr);
    
    정의 만 맡 고 호출 은 책임 지지 않 습 니 다.arraymap(); 함수 내부 호출 담당.
    동시에 수신 하거나 처리 할 수 있 습 니 다.한 번 에 모든 배열 의 같은 위 치 를 한 번 씩 조작 하 는 것 입 니 다.따라서 이 함수 가 받 아들 인 매개 변수 개 수 는 전달 하 는 배열 의 수량 과 일치 해 야 합 니 다.
    하나의 기본 동작 이 있 습 니 다.매우 자주 사용 되 며,여러 배열 을 이용 하여 새로운 배열 로 조합 합 니 다.요구,함수 위치 전달 null.
    
    $names = array('z1', 'z2', 'z3');
    
    $maths = array(50, 40, 60);
    
    $score = array_map(null, $names, $maths);
    
    var_dump($score);
    
    리 셋 함수 사용-아 날로 그 데이터 구조 함수-정렬 함수
    array_walk($funcname);
    한 배열 의 모든 요 소 를 조작 하여 array맵 의 차이 점.

  • array_map()는 여러 배열 을 조작 할 수 있 고 arraywalk(); 하나의 배열 만 조작 할 수 있 습 니 다.

  • array_map(); 원소 값 만 얻 을 수 있 고 arraywalk(); 즉,원소 값 을 얻 을 수 있 고 원소 의 키 도 얻 을 수 있다.

  • 함수 의 첫 번 째 매개 변 수 를 인용 하여 전달 하여 수 정 된 기 존 배열 의 목적 을 달성 할 수 있 습 니 다.
  • 
    $names = array('aa', 'bb', 'cc');
    
    function fn1 ( &$val,$key ) {
      var_dump($val,$key);
    }
    
    array_walk($names, 'fn1');
    
    
    아 날로 그 데이터 구조
    입고 arraypush();
    출고 arraypop();
    //조작 할 때마다 색인 은 다시 색인 합 니 다.
    상단:arrayshift();
    맨 위 입력:arrayunshift();
    정렬 함수
    soft(); 값 에 따라 순 서 를 올리다.
    rsoft()값 에 따라 내림차 순
    ksoft()키 에 따라 오름차 순
    krsoft(); 키 에 따라 내림차 순
    //값 정렬,키 관 계 를 유지 하지 않 고 키 정렬 은 키 관 계 를 유지 합 니 다.
    //값 에 따라 정렬 하고 키 관 계 를 유지 합 니 다.
    asort(); 값,오름차 순,키 연결 유지.
    arsort(); 값,내림차 순,키 연결 유지.

    reverse():역순,기본 값 은 오름차 입 니 다.
    association:관련
    더 많은 PHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
    본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

    좋은 웹페이지 즐겨찾기