+ PHP의 어레이 연산자?
$test = array('hi');
$test += array('test','oh');
var_dump($test);
무엇인가.+
PHP의 어레이를 의미합니까?
언어 연산자에 대한 PHP 매뉴얼에서 인용
+ 연산자는 왼쪽 배열에 추가된 오른쪽 배열을 반환합니다. 두 배열에 모두 존재하는 키의 경우 왼쪽 배열의 요소가 사용되며 오른쪽 배열의 일치 요소는 무시됩니다.
그래서 만약 당신이 한다면
$array1 = ['one', 'two', 'foo' => 'bar'];
$array2 = ['three', 'four', 'five', 'foo' => 'baz'];
print_r($array1 + $array2);
얻을 수 있을 것이다
Array
(
[0] => one // preserved from $array1 (left-hand array)
[1] => two // preserved from $array1 (left-hand array)
[foo] => bar // preserved from $array1 (left-hand array)
[2] => five // added from $array2 (right-hand array)
)
그래서 의 논리는+
는 다음 스니펫에 해당합니다.
$union = $array1;
foreach ($array2 as $key => $value) {
if (false === array_key_exists($key, $union)) {
$union[$key] = $value;
}
}
경영진 수준의 구현 세부 사항에 관심이 있는 경우 다음 페이지로 이동하십시오.
- php-src/Zend/zend_operators.c
주의:+
어레이를 조합하는 방법과는 다릅니다.
print_r(array_merge($array1, $array2));
너에게 줄 것이다
Array
(
[0] => one // preserved from $array1
[1] => two // preserved from $array1
[foo] => baz // overwritten from $array2
[2] => three // appended from $array2
[3] => four // appended from $array2
[4] => five // appended from $array2
)
자세한 예는 링크된 페이지를 참조하십시오.
이것을 사용하는 가장 좋은 예는 구성 배열에 있습니다.
$user_vars = array("username"=>"John Doe");
$default_vars = array("username"=>"Unknown", "email"=>"no-reply@domain.com");
$config = $user_vars + $default_vars;
그$default_vars
는 디폴트값의 배열입니다.그$user_vars
어레이는 에서 정의된 값을 덮어씁니다.$default_vars
.의 결측값$user_vars
디폴트값으로 지정되었습니다.$default_vars
.
이렇게 하면print_r
다음과 같이 합니다.
Array(2){
"username" => "John Doe",
"email" => "no-reply@domain.com"
}
도움이 됐으면 좋겠네요!
이 연산자는 2개의 어레이를 결합합니다(array_merge와 동일하지만 array_merge와 중복된 키는 덮어씁니다).
어레이 연산자에 대한 설명서는 여기에서 찾을 수 있습니다.
숫자 키를 보존해야 하는지 또는 아무것도 놓치고 싶지 않은지 신중하게 사용하십시오.
$a = array(2 => "a2", 4 => "a4", 5 => "a5");
$b = array(1 => "b1", 3 => "b3", 4 => "b4");
조합
print_r($a+$b);
Array
(
[2] => a2
[4] => a4
[5] => a5
[1] => b1
[3] => b3
)
합병하다
print_r(array_merge($a, $b));
Array
(
[0] => a2
[1] => a4
[2] => a5
[3] => b1
[4] => b3
[5] => b4
)
그+
연산자는 array_replace와 같은 결과를 생성합니다.그러나 연산자 인수는 반대로 되어 있기 때문에 결과 배열의 순서도 다를 수 있습니다.
이 페이지에서 다른 예를 확장합니다.
$array1 = array('one', 'two', 'foo' => 'bar');
$array2 = array('three', 'four', 'five', 'foo' => 'baz');
print_r($array1 + $array2);
print_r(array_replace($array2, $array1)); //note reversed argument order
출력:
Array
(
[0] => one // preserved from $array1
[1] => two // preserved from $array1
[foo] => bar // preserved from $array1
[2] => five // added from $array2
)
Array
(
[0] => one // preserved from $array1
[1] => two // preserved from $array1
[2] => five // added from $array2
[foo] => bar // preserved from $array1
)
- 어레이 플러스 조작은 모든 어레이를 assoc 어레이로 취급합니다.
- + 중에 키가 충돌하면 왼쪽(이전) 값이 유지됩니다.
아래 코드를 게시합니다.
$a + $b = array_plus($a, $b)
function array_plus($a, $b){
$results = array();
foreach($a as $k=>$v) if(!isset($results[$k]))$results[$k] = $v;
foreach($b as $k=>$v) if(!isset($results[$k]))$results[$k] = $v;
return $results;
}
새로운 어레이가 이전 어레이에 추가됩니다.
$var1 = "example";
$var2 = "test";
$output = array_merge((array)$var1,(array)$var2);
print_r($output);
어레이 ( [0] = > 예 [1] = > 테스트)
언급URL : https://stackoverflow.com/questions/2140090/operator-for-array-in-php
'programing' 카테고리의 다른 글
핸들바의 인덱스로 액세스 어레이 항목에 액세스하려면 어떻게 해야 합니까? (0) | 2022.10.30 |
---|---|
약속을 반환하는 Vuex 작업이 해결되거나 거부되지 않음 (0) | 2022.10.30 |
NULL이 있는 고유 키 (0) | 2022.10.30 |
Windows XP의 Java 최대 메모리 (0) | 2022.10.30 |
다른 SELECT 값을 기반으로 SELECT하는 방법 (0) | 2022.10.30 |