array_push () z parą wartości klucza

183

Mam istniejącą tablicę, do której chcę dodać wartość.

Staram się to osiągnąć array_push()bezskutecznie.

Poniżej mój kod:

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

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

Chcę dodać kota jako klucz do $datatablicy z wagonem jako wartością, aby uzyskać do niego dostęp jak w poniższym fragmencie:

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

Jak mogę to osiągnąć?

mistero
źródło

Odpowiedzi:

334

A co z posiadaniem:

$data['cat']='wagon';
dusoft
źródło
Ostrzeżenie: $a['123'] = 456;- ciąg „123” jest konwertowany na klucz całkowity 123.
bancer
W przypadku kluczy całkowitych nie chcesz zawijać ich w cudzysłowy / ciąg.
dusoft
Niekoniecznie. Jeśli niektóre inne klucze są ciągami, takimi jak „123a”, może być pożądane zachowanie kluczy ciągów dla wszystkich elementów.
bancer
51

Jeśli chcesz dodać wiele kluczy => wartość, spróbuj tego.

$data = array_merge($data, array("cat"=>"wagon","foo"=>"baar"));
Harijs Krūtainis
źródło
1
Można do tego również użyć pętli.
Jack Perry
Pętla nie pomaga. Jeśli chcesz wypychać wartości ze zduplikowaną nazwą klucza, musisz użyć array_merge.
Richard Smith
38
$data['cat'] = 'wagon';

To wszystko, czego potrzebujesz, aby dodać klucz i wartość do tablicy.

rogeriopvl
źródło
6

Na przykład:

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

Aby zmienić kluczową wartość:

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

wynik:

Array ([firstKey] => updatedValue [secondKey] => secondValue)

Aby dodać nową parę klucz-wartość:

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

wynik:

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

Książę Patel
źródło
5

Nie musisz używać funkcji array_push (), możesz przypisać nową wartość nowym kluczem bezpośrednio do tablicy, np.

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


Output:

   Array(
     [color1] => red
     [color2] => blue
     [color3] => green
   )
Deepak Vaishnav
źródło
Powinieneś także podkreślić, jaka jest dokładna różnica, tutaj użyłeś = zamiast, dla OP
NitinSingh
1
Ten kod jest nieprawidłowy. array_push przyjmuje dwa parametry, a otrzymasz ostrzeżenie o tym, że używasz go źle, w wyniku czego wywołanie array_push nic nie robi. To, co tak naprawdę robi druga linia kodu, to po prostu $array['color3']='green'. Właśnie to zrobił @dusoft powyżej. Twój kod jest tylko zaciemnieniem tego rozwiązania.
Richard Smith
@RichardSmith dziękuję za pokazanie mojego błędu, zmieniłem odpowiedź. :)
Deepak Vaishnav
0

Array [„klucz”] = wartość;

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

Właśnie tego potrzebujesz. W tym celu nie trzeba używać funkcji array_push (). Kiedyś problem jest bardzo prosty i myślimy w złożony sposób :).

Mr-Faizan
źródło
-3

Po prostu zrób to:

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

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

* W php 7 i nowszych tablica tworzy się za pomocą [], a nie ()

Xayer
źródło
Dwa problemy: array_pushdodaje parametry 2nd + jako nowe wartości (jak nie parowanie klucz-wartość array_merge, a PHP 7 chętnie akceptuje array()składnię tablicy (a także []składnię stenografii )
Chris Forrence