2011-10-30 18 views
6

Próbuję utworzyć instancję tablicy asocjacyjnej, a następnie w drugim wywołaniu, przypisać mu różne inne zestawy wartości na jednej linii blokowej. Chciałbym zrobić to zgodnie z tą samą formę jak w instancji:Dodawanie wielu wartości do tablicy asocjacyjnej w PHP w jednym wywołaniu

"variable" = > 'value'; 

Moje instancji jest:

$post_values = array(
    "x_login"   => "API_LOGIN_ID", 
    "x_tran_key"  => "TRANSACTION_KEY", 
); 

chciałbym dodać:

"x_version"   => "3.1", 
"x_delim_data"  => "TRUE", 
"x_delim_char"  => "|", 
"x_relay_response" => "FALSE", 
"x_state"   => "WA", 
"x_zip"    => "98004" 

Jakie są opcje ? Być może jest użycie array_push, którego nie wiem o dodawaniu wielu wartości z większą łatwością? Albo jestem Wsadziłem dodając wartości za połączenie jak:

$post_values['x_version']='3.1'; 
.... 
$post_values['x_zip']='98004'; 

Czy jest jakiś inny sposób na wdzięku dodać wiele wartości do tablicy asocjacyjnej w jednej linii?

+0

'array_push ($ post_values, array ("x_version"=> "3,1", ...)' ? – str

+0

patrz odpowiednia odpowiedź [w jednym wywołaniu] tutaj :: @ bottom ;; http://stackoverflow.com/questions/6123122/how-to-push-hash-into-array-of-hash-in-php –

Odpowiedz

6

Spróbuj tego:

$post_values = array( 
    "x_login"   => "API_LOGIN_ID", 
    "x_tran_key"  => "TRANSACTION_KEY", 
); 

$array2 = array(
    "x_version"   => "3.1", 
    "x_delim_data"  => "TRUE", 
    "x_delim_char"  => "|", 
    "x_relay_response" => "FALSE", 
    "x_state"   => "WA", 
    "x_zip"    => "98004" 
); 

$result = $post_values + $array2; 

Uwaga jednak: Jeśli klucz już istnieje w $ post_values ​​nie zostaną nadpisane.

+1

Wydaje array_merge nadpisaniu, gdzie + jest taka sama funkcja, ale nie nadpisać . Mam to, dziękuję :) – ViviDVasT

+1

Możesz również użyć operatora '+ =' tak jak to '$ post_values ​​+ = ['x_version' => '3.1', 'x_zip' => 98004];' –

2

W celu utrzymania rzeczy ładne i czyste, a w tym przypadku prosta, może być lepiej wyłączyć za pomocą array_merge()

Osobiście deklarować żadnych tablic na szczycie mojego pliku klasy, aby uczynić je dostępnymi globalnie , tylko dlatego, że staram się zachować metody wolne od deklaracji macierzy (OCD chyba!)

Tak więc dla mnie mam przykład, który może ci pomóc, to jest coś, co działa dla mnie, gdy trzeba dodać/połączyć dwie tablice razem:

protected $array1 = array (
    'basic' => '1', 
    'example' => '2', 
    'for'  => '3' 
); 

protected $array2 = array(
    'merging'  => '4', 
    'two'   => '5', 
    'associative' => '6', 
    'arrays'  => '7', 
    'mate'  => '8' 
); 

Następnie w swoim pliku klasy, można użyć tych tablic ani żadnych utworzonych tablic i scalić kiedy chcesz:

public function ExampleOne() 
{ 
    $firstArray = $this->array1; 
    print_r($firstArray); 

    $secondArray = $this->array2; 
    print_r($secondArray); 

    $merged = array_merge($firstArray, $secondArray); 
    print_r($merged); 
} 

Każdy print_r() daje wydruk w konsoli danych/stworzonej tablicy. Dzięki temu możesz samemu zobaczyć, że wszystko zostało poprawnie utworzone i każdy klucz ma przypisaną wartość (sprawdź strony podręcznika PHP, aby uzyskać ostateczne wyjaśnienie: print_r()).

Tak, pierwsza tablica będzie/powinna zaprezentować to:

Array 
(
    [basic] => 1 
    [example] => 2 
    [for]  => 3 
) 

Druga tablica będzie/powinna zaprezentować to:

Array 
(
    [merging]  => 4 
    [two]   => 5 
    [associative] => 6 
    [arrays]  => 7 
    [mate]  => 8 
) 

a array_merge() pracy stworzy ostateczną tablicę, które będzie pokazywać:

Array 
(
    [basic]  => 1 
    [example]  => 2 
    [for]   => 3 
    [merging]  => 4 
    [two]   => 5 
    [associative] => 6 
    [arrays]  => 7 
    [mate]  => 8 
) 

Oczywiście nie zawsze trzeba umieszczać/tworzyć swoje arr ays na górze pliku klasowego i kiedy jest to potrzebne, możesz oczywiście tworzyć tablice w ramach jednej funkcji, jeśli są one tylko potrzebne/wykorzystane w tym miejscu - to, co tutaj zaprezentowałem, było czymś, co ostatnio zrobiłem dla projektu w pracy (z danymi w tych tablicach będących przykład dane oczywiście!)

nadzieję, że to pomaga ludziom się nieco bardziej :-D

Powiązane problemy