[php] 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;

?


답변

내 대답은 아니오 야. 키-값 쌍을 연관 배열 앞에 추가 할 수 없습니다.

그러나 통합 연산자를 사용하여 배열 시작 부분에 새 키-값 쌍을 포함하는 새 배열을 만들 수 있습니다 +. 결과는 완전히 새로운 배열이며 새 배열을 만드는 데는 O (n) 복잡성이 있습니다.

구문은 다음과 같습니다.

$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);


답변

@Cletus가 자리를 잡았습니다. 추가하기 위해 입력 배열의 요소 순서가 모호하고 최종 배열을 정렬해야하는 경우 ksort 할 수 있습니다 .

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


답변

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

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

참조 :

PHP : array_merge ()

PHP : 어레이-Manual

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


답변