리터럴 키 => 값 쌍을 연관 배열 앞에 추가 할 수 있습니까? 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 5.4부터는 array ()를 []로 대체하는 짧은 배열 구문을 사용할 수도 있습니다.