수색…


배열에서 요소 제거하기

배열 안의 요소, 예를 들어 인덱스가 1 인 요소를 제거하려면.

$fruit = array("bananas", "apples", "peaches");
unset($fruit[1]);

그러면 목록에서 사과가 제거되지만 unset 은 나머지 요소의 색인을 변경하지 않습니다. 따라서 $fruit 에는 02 의 인덱스가 포함됩니다.

연관 배열의 경우 다음과 같이 제거 할 수 있습니다.

$fruit = array('banana', 'one'=>'apple', 'peaches');

print_r($fruit);
/*
    Array
    (
        [0] => banana
        [one] => apple
        [1] => peaches
    )
*/

unset($fruit['one']); 

이제 $ 과일입니다.

print_r($fruit);

/*
Array
(
    [0] => banana
    [1] => peaches
)
*/

유의 사항

unset($fruit);

변수를 설정 해제하고 전체 배열을 제거합니다. 즉, 더 이상 액세스 할 수없는 요소를 의미합니다.

터미널 요소 제거

array_shift () - 배열 시작 부분에서 요소를 이동합니다.

예:

  $fruit = array("bananas", "apples", "peaches");
  array_shift($fruit);
  print_r($fruit);

산출:

 Array
(
    [0] => apples
    [1] => peaches
)

array_pop () - 배열의 끝에서 요소를 팝합니다.

예:

  $fruit = array("bananas", "apples", "peaches");
  array_pop($fruit);
  print_r($fruit);

산출:

 Array
(
    [0] => bananas
    [1] => apples
)

배열 필터링

배열의 값을 필터링하고 필터 조건을 만족하는 모든 값을 포함하는 새 배열을 얻으려면 array_filter 함수를 사용할 수 있습니다.

비어 있지 않은 값 필터링

필터링의 가장 간단한 경우는 모든 "빈"값을 제거하는 것입니다.

$my_array = [1,0,2,null,3,'',4,[],5,6,7,8];
$non_empties = array_filter($my_array); // $non_empties will contain [1,2,3,4,5,6,7,8]; 

콜백 필터링

이번에는 자체 필터링 규칙을 정의합니다. 숫자가 짝수가되기를 원한다고 가정 해보자.

$my_array = [1,2,3,4,5,6,7,8];

$even_numbers = array_filter($my_array, function($number) {
    return $number % 2 === 0;   
});

array_filter 함수는 필터링 할 배열을 첫 번째 인수로 받고 콜백을 사용하여 필터 조건자를 두 번째 인수로 정의합니다.

5.6

색인에 의한 필터링

array_filter 함수에 세 번째 매개 변수를 제공하여 콜백에 전달되는 값을 조정할 수 있습니다. 이 매개 변수는 ARRAY_FILTER_USE_KEY 또는 ARRAY_FILTER_USE_BOTH 중 하나로 설정 될 수 있습니다. 콜백은 배열의 각 요소 값 대신 키를 수신하거나, value와 key를 인수로받습니다. 예를 들어, 인덱스를 처리하려는 경우 다음 값 중 하나를 선택하십시오.

$numbers = [16,3,5,8,1,4,6];

$even_indexed_numbers = array_filter($numbers, function($index) {
    return $index % 2 === 0;
}, ARRAY_FILTER_USE_KEY);

필터링 된 배열의 인덱스

array_filter 는 원래 배열 키를 보존합니다. 일반적인 실수는 필터링 된 배열 for 루프를 사용하는 것 for .

<?php

$my_array = [1,0,2,null,3,'',4,[],5,6,7,8];
$filtered = array_filter($my_array); 

error_reporting(E_ALL); // show all errors and notices

// innocently looking "for" loop
for ($i = 0; $i < count($filtered); $i++) {
   print $filtered[$i];
}

/*
Output:
1
Notice: Undefined offset: 1
2
Notice: Undefined offset: 3
3
Notice: Undefined offset: 5
4
Notice: Undefined offset: 7
*/

이것은 1 ( 0 ), 3 ( null ), 5 (빈 문자열 '' ) 및 7 (빈 배열 [] )에있는 값이 해당 색인 키와 함께 제거 되었기 때문에 발생합니다.

인덱스 된 배열에서 필터의 결과를 반복해야하는 경우 올바른 인덱스가있는 새 배열을 만들려면 먼저 array_filter 의 결과에 대해 array_values 를 호출해야합니다.

$my_array = [1,0,2,null,3,'',4,[],5,6,7,8];
$filtered = array_filter($my_array); 
$iterable = array_values($filtered);

error_reporting(E_ALL); // show all errors and notices

for ($i = 0; $i < count($iterable); $i++) {
   print $iterable[$i];
}

// No warnings!

배열의 시작에 요소 추가하기

때로는 배열 내에서 현재 요소 ( 순서 )를 수정하지 않고 배열의 맨 앞에 요소를 추가하려고합니다. 이럴 때마다 array_unshift() 사용할 수 있습니다.

array_unshift() 는 전달 된 요소를 배열 앞에 추가합니다. 요소 목록은 전체적으로 앞에 추가되므로 앞에 붙인 요소는 같은 순서로 유지됩니다. 리터럴 키는 건드리지 않지만 모든 숫자 배열 키는 0부터 카운트를 시작하도록 수정됩니다.

array_unshift() 대한 PHP 문서 에서 가져온 것이다.

이를 달성하려면 다음을 수행하면됩니다.

$myArray = array(1, 2, 3);

array_unshift($myArray, 4);

이제 배열의 첫 번째 요소로 4 가 추가됩니다. 다음 방법으로 확인할 수 있습니다.

print_r($myArray);

다음과 같은 순서로 배열을 반환합니다 : 4, 1, 2, 3 .

array_unshift 가 배열에서 새로운 요소로 키 - 값 쌍을 재설정하도록 강제하기 때문에 다음 항목에 n+1 키가 있습니다. 새 배열을 만들고 새로 만든 배열에 기존 배열을 추가하는 것이 더 똑똑합니다.

예:

$myArray = array('apples', 'bananas', 'pears');
$myElement = array('oranges');
$joinedArray = $myElement;

foreach ($myArray as $i) {
  $joinedArray[] = $i;
}

출력 ($ joinedArray) :

Array ( [0] => oranges [1] => apples [2] => bananas [3] => pears ) 

Eaxmple / Demo

일부 배열 키만 허용 목록에 추가

배열의 특정 키만 허용하려는 경우 (특히 배열이 요청 매개 변수에서 오는 경우) array_intersect_keyarray_flip 함께 사용할 수 있습니다.

$parameters = ['foo' => 'bar', 'bar' => 'baz', 'boo' => 'bam'];
$allowedKeys = ['foo', 'bar'];
$filteredParameters = array_intersect_key($parameters, array_flip($allowedKeys));

// $filteredParameters contains ['foo' => 'bar', 'bar' => 'baz]

parameters 변수에 허용 된 키가 포함되어 있지 않으면 filteredParameters 변수는 빈 배열로 구성됩니다.

PHP 5.6부터 ARRAY_FILTER_USE_KEY 플래그를 세 번째 매개 변수로 전달하여이 작업에 array_filter 를 사용할 수 있습니다.

$parameters  = ['foo' => 1, 'hello' => 'world'];
$allowedKeys = ['foo', 'bar'];
$filteredParameters = array_filter(
    $parameters,
    function ($key) use ($allowedKeys) {
        return in_array($key, $allowedKeys);
    },
    ARRAY_FILTER_USE_KEY
);

array_filter 를 사용하면 키에 대해 임의의 테스트를 수행 할 수있는 유연성이 추가됩니다. 예를 들어 $allowedKeys 에는 일반 문자열 대신 정규식 패턴이 포함될 수 있습니다. 또한 array_intersect_key()array_flip() 결합한 것보다 코드의 의도를 더 명확하게 기술합니다.

배열 정렬

PHP에는 배열을위한 몇 가지 정렬 함수가 있습니다 :

종류()

배열을 값순으로 오름차순으로 정렬합니다.

$fruits = ['Zitrone', 'Orange', 'Banane', 'Apfel'];
sort($fruits);
print_r($fruits);

~에 결과

Array
(
    [0] => Apfel
    [1] => Banane
    [2] => Orange
    [3] => Zitrone
)

rsort ()

배열을 값순으로 내림차순으로 정렬합니다.

$fruits = ['Zitrone', 'Orange', 'Banane', 'Apfel'];
rsort($fruits);
print_r($fruits);

~에 결과

Array
(
    [0] => Zitrone
    [1] => Orange
    [2] => Banane
    [3] => Apfel
)

asort ()

값에 따라 오름차순으로 배열을 정렬하고 indecies를 보존합니다.

$fruits = [1 => 'lemon', 2 => 'orange',  3 => 'banana', 4 => 'apple'];
asort($fruits);
print_r($fruits);

~에 결과

Array
(
    [4] => apple
    [3] => banana
    [1] => lemon
    [2] => orange
)

arsort ()

값에 따라 내림차순으로 배열을 정렬하고 indecies를 보존합니다.

$fruits = [1 => 'lemon', 2 => 'orange',  3 => 'banana', 4 => 'apple'];
arsort($fruits);
print_r($fruits);

~에 결과

Array
(
    [2] => orange
    [1] => lemon
    [3] => banana
    [4] => apple
)

ksort ()

배열을 키순으로 오름차순 정렬

$fruits = ['d'=>'lemon', 'a'=>'orange', 'b'=>'banana', 'c'=>'apple'];
ksort($fruits);
print_r($fruits);

~에 결과

Array
(
    [a] => orange
    [b] => banana
    [c] => apple
    [d] => lemon
)

krsort ()

배열을 키순으로 내림차순으로 정렬합니다.

$fruits = ['d'=>'lemon', 'a'=>'orange', 'b'=>'banana', 'c'=>'apple'];
krsort($fruits);
print_r($fruits);

~에 결과

Array
(
    [d] => lemon
    [c] => apple
    [b] => banana
    [a] => orange
)

natsort ()

인간이하는 것처럼 배열을 정렬합니다 (자연 순서).

$files = ['File8.stack', 'file77.stack', 'file7.stack', 'file13.stack', 'File2.stack'];
natsort($files);
print_r($files);

~에 결과

Array
(
    [4] => File2.stack
    [0] => File8.stack
    [2] => file7.stack
    [3] => file13.stack
    [1] => file77.stack
)

natcasesort ()

인간이하는 것처럼 배열을 정렬 (자연 순서)하지만 대소 문자를 많이 사용 함

$files = ['File8.stack', 'file77.stack', 'file7.stack', 'file13.stack', 'File2.stack'];
natcasesort($files);
print_r($files);

~에 결과

Array
(
    [4] => File2.stack
    [2] => file7.stack
    [0] => File8.stack
    [3] => file13.stack
    [1] => file77.stack
)

혼합()

배열을 임의로 정렬합니다 (임의로 정렬).

$array = ['aa', 'bb', 'cc'];
shuffle($array);
print_r($array);

설명에 쓰여 있듯이 그것은 무작위 적이기 때문에 결과가 될 수있는 유일한 예가 여기에 있습니다.

Array
(
    [0] => cc
    [1] => bb
    [2] => aa
)

usort ()

사용자 정의 비교 함수로 배열을 정렬합니다.

function compare($a, $b)
{
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

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

~에 결과

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

uasort ()

사용자 정의 비교 함수로 배열을 정렬하고 키를 보존합니다.

function compare($a, $b)
{
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

$array = ['a' => 1, 'b' => -3, 'c' => 5, 'd' => 3, 'e' => -5];
uasort($array, 'compare');
print_r($array);

~에 결과

Array
(
    [e] => -5
    [b] => -3
    [a] => 1
    [d] => 3
    [c] => 5
)

uksort ()

사용자 정의 비교 함수를 사용하여 키별로 배열을 정렬합니다.

function compare($a, $b)
{
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

$array = ['ee' => 1, 'g' => -3, '4' => 5, 'k' => 3, 'oo' => -5];

uksort($array, 'compare');
print_r($array);

~에 결과

Array
(
    [ee] => 1
    [g] => -3
    [k] => 3
    [oo] => -5
    [4] => 5
)

키를 사용하여 값 교환

array_flip 함수는 모든 키를 요소와 교환합니다.

$colors = array(
    'one' => 'red',
    'two' => 'blue',
    'three' => 'yellow',
);

array_flip($colors); //will output

array(
    'red' => 'one',
    'blue' => 'two',
    'yellow' => 'three'
)

두 배열을 하나의 배열로 병합

$a1 = array("red","green");
$a2 = array("blue","yellow");
print_r(array_merge($a1,$a2));

/*
    Array ( [0] => red [1] => green [2] => blue [3] => yellow )
*/

연관 배열 :

$a1=array("a"=>"red","b"=>"green");
$a2=array("c"=>"blue","b"=>"yellow");
print_r(array_merge($a1,$a2));
/*
    Array ( [a] => red [b] => yellow [c] => blue )
*/
  1. 하나 이상의 배열 요소를 병합하여 하나의 값이 이전 배열의 끝에 추가되도록합니다. 결과 배열을 반환합니다.
  2. 입력 배열에 동일한 문자열 키가 있으면 해당 키의 나중 값이 이전 키를 덮어 씁니다. 그러나 배열에 숫자 키가 포함되어 있으면 나중에 값이 원래 값을 덮어 쓰지 않고 추가됩니다.
  3. 숫자 키가있는 입력 배열의 값은 결과 배열에서 0부터 시작하는 키의 번호가 다시 매겨집니다.


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