PHP의 연관 배열에 항목 푸시


92

다음과 같은 연관 배열에 항목을 푸시하려고했습니다.

$new_input['name'] = array(
    'type' => 'text', 
    'label' => 'First name', 
    'show' => true, 
    'required' => true
);
array_push($options['inputs'], $new_input);

그러나 키로 '이름'대신 숫자를 추가합니다. 다른 방법이 있습니까?


어레이를 다른 어레이로 푸시 할 수 없습니다. 이 모든 옵션을 시도했으며 병합이 방금 배열을 추가했습니다. 나는 수업으로 내 문제를 해결했습니다.
Alex Benincasa Santos 2017-06-05

답변:



62

대신 array_push () 를 사용 array_merge ()

두 배열을 병합하고 항목을 단일 배열로 결합합니다.

예제 코드 -

$existing_array = array('a'=>'b', 'b'=>'c');
$new_array = array('d'=>'e', 'f'=>'g');

$final_array=array_merge($existing_array, $new_array);

final_array의 결과 배열을 반환합니다. 결과 배열의 결과는 다음과 같습니다.

array('a'=>'b', 'b'=>'c','d'=>'e', 'f'=>'g')

가능한 문제를 파악하려면 이 링크를 검토하십시오 .


1
실제로 $ existing_array = array ( 'a'=> 'b', 'b'=> 'c'); $ new_array = array ( 'd'=> 'e', ​​'f'=> 'g'); $ result = array_merge ($ existing_array, $ new_array);
Calvin Chan

1
결과물을 수집하는 것은 상식입니다. 나는 단지 아이디어를 제공하고 있었다. 감사합니다
Murtaza Khursheed Hussain 2013-08-29

17

이것은 멋진 기능입니다

function array_push_assoc($array, $key, $value){
   $array[$key] = $value;
   return $array;
}

그냥 사용

$myarray = array_push_assoc($myarray, 'h', 'hello');

크레딧 및 설명


7

WebbieDave의 솔루션이 작동합니다. 이미 'name'에있을 수있는 항목을 덮어 쓰지 않으려면 다음과 같이 할 수도 있습니다.

$options['inputs']['name'][] = $new_input['name'];


예를 들어 그 사이에 다른 번호가 매겨진 배열을 넣지 않고 모든 것을 연관성있게 유지하지 않으려면 작동하지 않습니다. 아래 @Steven H에서 찾아 보게
brianlmerritt

4

$new_input'이름'요소 이상을 포함 할 수있는 경우 사용할 수 있습니다 array_merge.

$new_input = array('name'=>array(), 'details'=>array());
$new_input['name'] = array('type'=>'text', 'label'=>'First name'...);
$options['inputs'] = array_merge($options['inputs'], $new_input);

3

Curtis의 대답은 내가 필요로하는 것과 매우 비슷했지만 약간 변경했습니다.

그가 사용한 곳 :

$options['inputs']['name'][] = $new_input['name'];

나는 다음을 사용했다 :

$options[]['inputs']['name'] = $new_input['name'];

다음은 DB의 쿼리를 사용하는 실제 코드입니다.

while($row=mysql_fetch_array($result)){ 
    $dtlg_array[]['dt'] = $row['dt'];
    $dtlg_array[]['lat'] = $row['lat'];
    $dtlg_array[]['lng'] = $row['lng'];
}

감사!


3

나는 사용한다 php5.6

코드 :

$person = ["name"=>"mohammed", "age"=>30];

$person['addr'] = "Sudan";

print_r($person) 

산출

Array( ["name"=>"mohammed", "age"=>30, "addr"=>"Sudan"] )

2

몇 가지 스 니펫 만 변경 (array_merge 함수 사용) :-

  $options['inputs']=array_merge($options['inputs'], $new_input);

1
$new_input = array('type' => 'text', 'label' => 'First name', 'show' => true, 'required' => true);
$options['inputs']['name'] = $new_input;

1

이를 수행하는 더 좋은 방법이 있습니다.

$ arr_options 배열에 기존 배열이 포함 된 경우.

$arr_new_input['name'] = [
    'type' => 'text', 
    'label' => 'First name', 
    'show' => true, 
    'required' => true
];

$arr_options += $arr_new_input;

경고 : $ arr_options가 있어야합니다. $ arr_options에 이미 [ 'name']이 있으면 덮어 쓰게됩니다.

도움이 되었기를 바랍니다.



0

array_merge ($ array1, $ array2)를 사용하여 연관 배열을 병합 할 수 있습니다. 예:

$a1=array("red","green");
$a2=array("blue","yellow");
print_r(array_merge($a1,$a2));

산출:

Array ( [0] => red [1] => green [2] => blue [3] => yellow )
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.