Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dodanie dwóch wartości do jednego klucza w tablicy
Forum PHP.pl > Forum > PHP
Szunaj85
Zazwyczaj jak dodaje nowe wartości do tablicy to posługuję się:
  1. array_push($nazwa_tablicy, $wartosc);
Jak dodać dwie wartości do jednego klucza w tablicy?
Próbowałem tak:
  1. array_push($nazwa_tablicy, $wartosc, wartosc_2);
Ale wtedy mój wynik to:
Kod
Array
(
    [0] => wartosc
    [1] => wartosc_2
)
A nie o to mi chodzi.
lukaskolista
nie jest to mozliwe. Mozesz do klucza przypisac tablice w w tej tablicy wartosci, ale to bedzie juz tablica 2-wymiarowa
Szunaj85
W takim razie czy dobrze napisałem pustą tablice dwuwymiarową?
Kod
$nazwa_tablicy = array(array()array())
I jak powinno wyglądać dodawanie dwóch wartości do tablicy dwuwymiarowej tak, aby przypisać je do jednego klucza?
ADeM
Możesz zrobić coś takiego:
  1. $tablica[] = array( 'pierwszaWartosc', 'drugaWartosc' );
Szunaj85
Jak rozumiem to jest pusta tablica dwuwymiarowa.
  1. $tablica[] = array( 'pierwszaWartosc', 'drugaWartosc' );
A jak ma wyglądać dodawanie dwóch zmiennych do tablicy dwuwymiarowej tak, aby przypisać je do jednego klucza? Pewnie za pomocą array_push().
ADeM
Sprawdź co zawiera $tablica po wykonaniu mojego kodu, bo wydaje mi się, że to co chciałeś uzyskać.
  1. var_dump( $tablica );
Szunaj85
Tablica wygląda tak:
Kod
Array
(
    [0] => Array
        (
            [0] =>
            [1] =>
        )
)
I chyba o to chodziło.
Ale jest pusta. Normalnie przy tablicy jednowymiarowej robiłem tak:
  1. array_push($nazwa_tablicy, $wartosc);
Ja się pytam jak wygląda dodawanie zmiennych do tablic dwuwymiarowych? angrysmiley.gif
ADeM
Nie byłaby pusta, jakbyś zrobił dokładnie to co Ci podałem.
W moim przykładzie masz podane dwie wartości. Możesz ich tam dopisać więcej. Mogą to być zmienne.
Szunaj85
Dobra już załapałem. Mam jeszcze jedne problem.
Ale po kolei.
- $nazwa tablicy - to nazwa tablicy dwuwymiarowej.
W niej są w każdym kluczu wyświetlone 2 zmienne $wartosc i $wartosc_2
- $nazwa_tablicy_2 to inna tablica jednowymiarowa
Tak robiłem przy tablicy jednowymiarowej:
  1. foreach($nazwa_tablicy as $klucz => $wartosc_3){
  2. if($wartosc_3==$nazwa_tablicy_2[$klucz]){
  3. echo 'równe';
  4. }else {
  5. echo 'nie równe';
  6. }
  7. }
Chcę teraz porównać zmienną $wartosc_2 z tablicy dwuwymiarowej($nazwa tablicy) ze zmienną $wartosc_3 z drugiej tablicy jednowymiarowej ($nazwa_tablicy_2). Jak to zrobić?
ADeM
Zamieszałeś strasznie. O ile dobrze widzę i rozumiem, to mówisz o jednym, a kod masz niezbyt pasujący do tego.
Może rozpisz to jakoś ładniej. Pokaż przykładowe tablice i wskaż co chcesz z czym porównać.
Szunaj85
Mam tablice jednowymiarową $nazwa_tablicy_2:
  1. $nazwa_tablicy_2 = array(
  2. 'jeden',
  3. 'dwa',
  4. 'trzy',
  5. );
Oraz tablice dwuwymiarową $nazwa_tablicy:
Kod
Array
(
    [0] => Array
        (
            [0] => jakaś wartosc 1
            [1] => jeden
        )

    [1] => Array
        (
            [0] => jakaś wartosc 2
            [1] => dwa
        )

    [2] => Array
        (
            [0] => jakaś wartosc 3
            [1] => trzy
        )
)
I teraz porównać czy wartość 'jeden' z tablicy $nazwa_tablicy jest równa pierwszej wartości z tablicy $nazwa_tablicy_2 i wyświetlić odpowiedni komunikat gdzie zostaną podane 3 wartości (1 wartość z pierwszej tablicy i 2 wartości z drugiej tablicy).
Dalej porównać czy wartość 'dwa' z tablicy $nazwa_tablicy jest równa drugiej wartości z tablicy $nazwa_tablicy_2 i wyświetlić odpowiedni komunikat gdzie zostaną podane 3 wartości (1 wartość z pierwszej tablicy i 2 wartości z drugiej tablicy).
itd.
ADeM
Ech... Piszesz 3 wartości, a podajesz dwie. Ciężko Cię zrozumieć.
  1. foreach( $nazwa_tablicy as $klucz => $wartosc ) {
  2. if( $wartosc[ 1 ] == $nazwa_tablicy_2[ $klucz ] ) {
  3. echo $nazwa_tablicy_2[ $klucz ], ' ', $wartosc[ 0 ], ' ', $wartosc, "\n";
  4. }
  5. }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.