キーと値のペアを持つarray_push()


184

値を追加したい既存の配列があります。

私はarray_push()無駄にそれを達成しようとしています。

以下は私のコードです:

$data = array(
    "dog" => "cat"
);

array_push($data['cat'], 'wagon');

私が達成したいのは、次のスニペットのようにアクセスするために、値としてワゴンを使用して配列にキーとしてを追加することです:$data

echo $data['cat']; // the expected output is: wagon

どうすればそれを達成できますか?

回答:


334

だから、どうですか:

$data['cat']='wagon';

警告:$a['123'] = 456;-文字列「123」は整数キー123に変換される
bancer

整数キーの場合、それらを引用符/文字列にラップする必要はありません。
dusoft

必ずしも。他のいくつかのキーが「123a」のような文字列である場合、すべてのアイテムの文字列キーを保持することが望ましい場合があります。
バンサー

51

複数のkey => valueを追加する必要がある場合は、これを試してください。

$data = array_merge($data, array("cat"=>"wagon","foo"=>"baar"));

1
そのためにループを使用することもできます。
ジャックペリー

ループは役に立ちません。重複するキー名で値をプッシュする場合は、を使用する必要ありますarray_merge
Richard Smith

38
$data['cat'] = 'wagon';

キーと値を配列に追加するために必要なのはこれだけです。


6

例えば:

$data = array('firstKey' => 'firstValue', 'secondKey' => 'secondValue');

キー値を変更する場合:

$data['firstKey'] = 'changedValue'; 
//this will change value of firstKey because firstkey is available in array

出力:

配列([firstKey] => changedValue [secondKey] => secondValue)

新しいキーと値のペアを追加する場合:

$data['newKey'] = 'newValue'; 
//this will add new key and value because newKey is not available in array

出力:

配列([firstKey] => firstValue [secondKey] => secondValue [newKey] => newValue)


5

array_push()関数を使用する必要はありません。新しい値を新しいキーで配列に直接割り当てることができます。

$array = array("color1"=>"red", "color2"=>"blue");
$array['color3']='green';
print_r($array);


Output:

   Array(
     [color1] => red
     [color2] => blue
     [color3] => green
   )

正確な違いは何かを強調する必要もあります。ここでは、OPの代わりに=ではなく=を使用しました
NitinSingh

1
このコードは間違っています。array_pushは2つのパラメーターを受け取り、それを間違って使用しているという警告が表示され、array_pushの呼び出しで何も実行されないという結果になります。コードの2行目が実際に行っていることは単純$array['color3']='green'です。これがまさに@dusoftが上記で行ったことです。あなたのコードはそのソリューションを単に難読化したものです。
Richard Smith

@RichardSmith私の間違いを見せてくれてありがとう、私は私の答えを変更しました。:)
Deepak Vaishnav

0

Array ['key'] =値;

$data['cat'] = 'wagon';

これが必要です。これにはarray_push()関数を使用する必要はありません。問題が非常に単純で、複雑な方法で考える場合もあります:)。


-3

ただそれをしてください:

$data = [
    "dog" => "cat"
];

array_push($data, ['cat' => 'wagon']);

* php 7以降では、配列は()ではなく[]を使用して作成されます


2つの問題:array_push2番目のパラメーターを新しい値として(キーと値の組み合わせでarray_mergeはなく)追加し、PHP 7はarray()配列構文(および省略[]構文)をうまく受け入れます
Chris Forrence
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.