수색…


배열의 각 요소에 함수 적용

배열의 모든 항목에 함수를 적용하려면 array_map() 사용 array_map() . 그러면 새로운 배열이 반환됩니다.

$array = array(1,2,3,4,5);
//each array item is iterated over and gets stored in the function parameter.
$newArray = array_map(function($item) {
    return $item + 1;
}, $array);

$newArray 이제 array(2,3,4,5,6); .

익명의 함수 를 사용하는 대신 명명 된 함수를 사용할 수 있습니다. 위의 내용은 다음과 같이 작성할 수 있습니다.

function addOne($item) {
    return $item + 1;
}

$array = array(1, 2, 3, 4, 5);
$newArray = array_map('addOne', $array);

명명 된 함수가 클래스 메서드 인 경우 함수 호출에는 메서드가 속한 클래스 개체에 대한 참조가 포함되어야합니다.

class Example {
    public function addOne($item) {
        return $item + 1;
    }

    public function doCalculation() {
        $array = array(1, 2, 3, 4, 5);
        $newArray = array_map(array($this, 'addOne'), $array);
    }
}

배열의 모든 항목에 함수를 적용하는 또 다른 방법은 array_walk()array_walk_recursive() 입니다. 이 함수에 전달 된 콜백은 키 / 인덱스와 각 배열 항목의 값을 취합니다. 이 함수는 새로운 배열을 반환하지 않고 성공을위한 부울을 반환합니다. 예를 들어, 모든 요소를 ​​간단한 배열로 출력하려면 :

$array = array(1, 2, 3, 4, 5);
array_walk($array, function($value, $key) {
    echo $value . ' ';
});
// prints "1 2 3 4 5"

콜백의 value 매개 변수는 참조로 전달 될 수 있으므로 원래 배열에서 직접 값을 변경할 수 있습니다.

$array = array(1, 2, 3, 4, 5);
array_walk($array, function(&$value, $key) {
    $value++;
});

$array 이제 array(2,3,4,5,6);

중첩 된 배열의 경우 array_walk_recursive() 는 각 하위 배열로 더 깊숙이 들어갑니다.

$array = array(1, array(2, 3, array(4, 5), 6);
array_walk_recursive($array, function($value, $key) {
    echo $value . ' ';
});
// prints "1 2 3 4 5 6"

참고 : array_walkarray_walk_recursive 를 사용하면 배열 항목의 값을 변경할 수 있지만 키는 변경할 수 없습니다. 참조에 의해 키를 콜백에 전달하는 것은 유효하지만 효과가 없습니다.

배열을 청크로 나눕니다.

array_chunk () 배열을 청크로 나눕니다.

우리가 일차원 배열을 따르고 있다고 가정 해 봅시다.

$input_array = array('a', 'b', 'c', 'd', 'e');

위의 PHP 배열에서 array_chunk () 를 사용하면,

$output_array = array_chunk($input_array, 2);

위의 코드는 2 개의 배열 요소 청크를 만들고 다음과 같이 다차원 배열을 만듭니다.

Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => c
            [1] => d
        )

    [2] => Array
        (
            [0] => e
        )

)

배열의 모든 요소가 청크 크기로 균등하게 나눠지지 않으면 출력 배열의 마지막 요소가 나머지 요소가됩니다.


두 번째 인수를 1보다 작게 전달하면 E_WARNING 이 던져지고 출력 배열은 NULL됩니다 .

매개 변수 세부
$ array (array) 입력 배열, 작업 할 배열
$ size (int) 각 청크의 크기 (정수 값)
$ preserve_keys (boolean) (옵션) 출력 배열에서 키를 보존하려면 TRUE로 설정하고 그렇지 않으면 FALSE로 설정하십시오.

배열을 문자열에 Imploding

implode() 는 모든 배열 값을 결합하지만 모든 키 정보를 잃어버린다 :

$arr = ['a' => "AA", 'b' => "BB", 'c' => "CC"];

echo implode(" ", $arr); // AA BB CC

Imploding 키는 array_keys() 호출을 사용하여 수행 할 수 있습니다.

$arr = ['a' => "AA", 'b' => "BB", 'c' => "CC"];

echo implode(" ", array_keys($arr)); // a b c

값을 갖는 Imploding 키는 더 복잡하지만 기능적 스타일을 사용하여 수행 할 수 있습니다.

$arr = ['a' => "AA", 'b' => "BB", 'c' => "CC"];

echo implode(" ", array_map(function($key, $val) { 
    return "$key:$val"; // function that glues key to the value
}, array_keys($arr), $arr)); 

// Output: a:AA b:BB c:CC

array_reduce

array_reduce array를 단일 값으로 줄입니다. 기본적으로 array_reduce 는 마지막 반복의 결과로 모든 항목을 살펴보고 다음 반복의 새 값을 생성합니다.

사용법 : array_reduce ($array, function($carry, $item){...}, $defaul_value_of_first_carry)

  • $ carry는 마지막 반복 라운드의 결과입니다.
  • $ item은 배열의 현재 위치 값입니다.

배열의 합

$result = array_reduce([1, 2, 3, 4, 5], function($carry, $item){
    return $carry + $item;
});

결과 : 15

배열에서 가장 큰 숫자

$result = array_reduce([10, 23, 211, 34, 25], function($carry, $item){
        return $item > $carry ? $item : $carry;
});

결과 : 211

모든 항목이 100 개 이상입니까?

$result = array_reduce([101, 230, 210, 341, 251], function($carry, $item){
        return $carry && $item > 100;
}, true); //default value must set true

결과 : true

100 미만의 항목입니까?

$result = array_reduce([101, 230, 21, 341, 251], function($carry, $item){
        return $carry || $item < 100;
}, false);//default value must set false

결과 : true

implode ($ array, $ piece)처럼

$result = array_reduce(["hello", "world", "PHP", "language"], function($carry, $item){
        return !$carry ? $item : $carry . "-" . $item ;
});

결과 : "hello-world-PHP-language"

implode 메소드를 만들면 소스 코드는 다음과 같이됩니다.

function implode_method($array, $piece){
    return array_reduce($array, function($carry, $item) use ($piece) {
            return !$carry ? $item : ($carry . $piece . $item);
    });
}

$result = implode_method(["hello", "world", "PHP", "language"], "-");

결과 : "hello-world-PHP-language"

list ()를 사용하여 배열을 "소멸"

변수 값 목록을 배열에 빠르게 지정하려면 list () 를 사용하십시오. compact () 도 참조하십시오.

// Assigns to $a, $b and $c the values of their respective array elements in           $array with keys numbered from zero
list($a, $b, $c) = $array;

PHP 7.1 (현재 베타 버전)을 사용하면 간단한 목록 구문 을 사용할 수 있습니다.

// Assigns to $a, $b and $c the values of their respective array elements in $array with keys numbered from zero
[$a, $b, $c] = $array;

// Assigns to $a, $b and $c the values of the array elements in $array with the keys "a", "b" and "c", respectively
["a" => $a, "b" => $b, "c" => $c] = $array;

배열에서 값 밀어 내기

요소를 배열에 푸시하는 두 가지 방법이 있습니다 : array_push and $array[] =


array_push 는 다음과 같이 사용됩니다.

$array = [1,2,3];
$newArraySize = array_push($array, 5, 6); // The method returns the new size of the array
print_r($array); // Array is passed by reference, therefore the original array is modified to contain the new elements

이 코드는 다음과 같이 인쇄됩니다.

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 5
    [4] => 6
)

$array[] = 은 다음과 같이 사용됩니다 :

$array = [1,2,3];
$array[] = 5;
$array[] = 6;
print_r($array);

이 코드는 다음과 같이 인쇄됩니다.

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 5
    [4] => 6
)


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow