수색…
배열에서 요소 제거하기
배열 안의 요소, 예를 들어 인덱스가 1 인 요소를 제거하려면.
$fruit = array("bananas", "apples", "peaches");
unset($fruit[1]);
그러면 목록에서 사과가 제거되지만 unset
은 나머지 요소의 색인을 변경하지 않습니다. 따라서 $fruit
에는 0
과 2
의 인덱스가 포함됩니다.
연관 배열의 경우 다음과 같이 제거 할 수 있습니다.
$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
함수는 필터링 할 배열을 첫 번째 인수로 받고 콜백을 사용하여 필터 조건자를 두 번째 인수로 정의합니다.
색인에 의한 필터링
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 )
일부 배열 키만 허용 목록에 추가
배열의 특정 키만 허용하려는 경우 (특히 배열이 요청 매개 변수에서 오는 경우) array_intersect_key
와 array_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 )
*/
- 하나 이상의 배열 요소를 병합하여 하나의 값이 이전 배열의 끝에 추가되도록합니다. 결과 배열을 반환합니다.
- 입력 배열에 동일한 문자열 키가 있으면 해당 키의 나중 값이 이전 키를 덮어 씁니다. 그러나 배열에 숫자 키가 포함되어 있으면 나중에 값이 원래 값을 덮어 쓰지 않고 추가됩니다.
- 숫자 키가있는 입력 배열의 값은 결과 배열에서 0부터 시작하는 키의 번호가 다시 매겨집니다.