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

回答:



62

代わりのarray_push() 、使用array_merge()

2つの配列をマージし、それらのアイテムを1つの配列に結合します。

サンプルコード-

$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($既存_array、$ new_array);
Calvin Chan

1
よく出力を収集することは常識です。私はただ考えを与えていました。よろしく
Murtaza Khursheed Hussain 2013


7

WebbieDaveのソリューションは機能します。すでに「name」にある可能性のあるものを上書きしたくない場合は、次のようにすることもできます。

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


これは、他の番号付き配列を間にプッシュしないなど、すべてを関連付けたままにしたくない場合は機能しません。以下の@StevenHをご覧ください
brianlmerritt 2017

4

$new_input'name'要素以外のものが含まれている可能性がある場合は、を使用できます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

カーティスの答えは私が必要としていたものに非常に近いものでしたが、私はそれを少し変更しました。

彼が使用した場所:

$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.