source

리터럴 키를 가진 PHP 연결 배열 앞에 추가하시겠습니까?

goodcode 2022. 10. 26. 21:42
반응형

리터럴 키를 가진 PHP 연결 배열 앞에 추가하시겠습니까?

리터럴 키=>값 쌍으로 어소시에이트 어레이를 추가할 수 있습니까?array_unshift()가 숫자 키로 동작하는 것은 알고 있습니다만, 리터럴 키로 동작하는 것을 희망하고 있습니다.

예를 들어 다음과 같이 하겠습니다.

$array1 = array('fruit3'=>'apple', 'fruit4'=>'orange');
$array2 = array('fruit1'=>'cherry', 'fruit2'=>'blueberry');

// prepend magic

$resulting_array = ('fruit1'=>'cherry', 
                    'fruit2'=>'blueberry', 
                    'fruit3'=>'apple', 
                    'fruit4'=>'orange');

그냥 하면 안 돼?

$resulting_array = $array2 + $array1;

?

키-값 쌍이 있는 연관 배열 앞에 직접 추가할 수 없습니다.

그러나 union 연산자를 사용하여 배열 시작 부분에 새 키-값 쌍을 포함하는 새 배열을 만들 수 있습니다.+그 결과 완전히 새로운 어레이가 되어 새로운 어레이의 작성은 복잡해집니다.

구문은 다음과 같습니다.

$new_array = array('new_key' => 'value') + $original_array;

주의: array_merge()는 사용하지 마십시오.array_merge()는 키를 덮어쓰고 숫자 키는 유지하지 않습니다.

이 경우 array_merge()를 사용합니다.

array_merge(array('fruit1'=>'cherry', 'fruit2'=>'blueberry'), array('fruit3'=>'apple', 'fruit4'=>'orange'));

단일 값을 부가하려면 array_unshift() 대신 관련 배열에 대해 array_merge()를 다시 사용합니다.

array_merge(array($key => $value), $myarray);

@mvpetrovich와 같은 방법을 사용하면 배열의 단축 버전을 사용하여 구문을 줄일 수 있습니다.

$_array = array_merge(["key1" => "key_value"], $_old_array);

참고 자료:

PHP: array_merge()

PHP: 어레이 - 수동

PHP 5.4에서는 array()를 []로 대체하는 짧은 배열 구문을 사용할 수도 있습니다.

@Cletus는 딱 들어맞았다.덧붙여 입력 배열의 요소의 순서가 애매하고, 최종 배열을 정렬할 필요가 있는 경우는, 다음과 같이 ksort 할 수 있습니다.

$resulting_array = $array1 + $array2;
ksort($resulting_array);

언급URL : https://stackoverflow.com/questions/1371016/php-prepend-associative-array-with-literal-keys

반응형