Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Array - jeden key, różne value
Forum PHP.pl > Forum > Przedszkole
Szymciosek
Witam,
szybkie pytanie: Jak wyświetlić takie dane ?

  1. $arr = ('imie' => 'Jan', 'imie' => 'Maciej');


Doszedłem do tego, że mogę zrobić to na takiej zasadzie:
  1. <?php
  2.  
  3. $arr = array ( array ( 'imie' => 'Jan'),
  4. array ( 'imie' => 'Maciej'));
  5.  
  6. $arr_length = count($arr);
  7.  
  8. for ($i = 0; $i < $arr_length; $i++)
  9. {
  10. foreach ($arr[$i] as $key => $value)
  11. {
  12. echo $key.' - '.$value.'<br />';
  13. }
  14. }


Ale nie jest to chyba zbyt dobre rozwiązanie... Tworzy niepotrzebnie dużo danych

Ten sam problem występuje mi w Twigu
erix
array_walk_recursive?
Szymciosek
Nie do końca chyba o to chodzi. Jak pewnie wiesz array w takiej postaci ('imie' => 'Jan') przyjmuje 2 wartości: Klucz oraz Wartość.

Mi chodzi o wyświetlenie wszystkich danych za pomocą jednej pętli w przypadku, gdy właśnie Klucz jest tylko jeden, nie zmienia się w żadnym wypadku.

Czyli mamy cały czas array('imie' => 'Jan', 'imie' => 'Maciek', 'imie' => 'Mariola', 'imie' => 'Rychu'); itd itp.
Chyba, że nie da się wykonać takiej tablicy, która jako klucz ma cały czas podaną jedną wartość ? To w jaki inny sposób można osiągnąć takie coś ?
darko
  1. $arr = array('imie' => array('Jan', 'Krzysztof', 'Stanisław'));
  2. // i jedna pętla
  3. foreach($arr as $a)
  4. {
  5. print_r(array_values($a['imie']);
  6. }
Szymciosek
Cytat(darko @ 27.08.2012, 16:23:12 ) *
  1. $arr = array('imie' => array('Jan', 'Krzysztof', 'Stanisław'));
  2. // i jedna pętla
  3. foreach($arr as $a)
  4. {
  5. print_r(array_values($a['imie']);
  6. }


Nie do końca to działa...

Notice: Undefined variable: a in C:\wamp\www\labs\arraykeyvalue.php on line 7
Warning: array_values() expects parameter 1 to be array, null given in C:\wamp\www\labs\arraykeyvalue.php on line 7

EDIT::
Dopiero tak działa, a nie o to mi jeszcze chodziło żebym wpisywał index tylko żeby to jakoś automatycznie działało.

  1. $arr = array('imie' => array('Jan', 'Krzysztof', 'Stanisław'));
  2.  
  3. foreach ($arr['imie'] as $a)
  4. {
  5. echo $a;
  6. }


Ponieważ w przypadku czegoś takiego jak:
  1. $arr = array('imie' => array('Jan', 'Krzysztof', 'Stanisław'), 'nazwisko' => array('Kowalski', 'Nowak', 'Tomaszewski'));
  2.  
  3. foreach ($arr['imie'] as $a)
  4. {
  5. echo $a;
  6. }

to już nie zadziała na pewno...
darko
  1. foreach($arr as $k => $v)
  2. {
  3. // i tu kolejno lecą klucze 'imie', w następnym przebiegu pętli 'nazwisko' itd.
  4. }
Szymciosek
A jak to połączyć ?
  1. $arr = array('imie' => array('Jan', 'Krzysztof', 'Stanisław'), 'nazwisko' => array('Kowalski', 'Nowak', 'Tomaszewski'));
  2.  
  3. foreach ($arr as $key => $value)
  4. {
  5. echo $key.' - '.$value;
  6. }


Kod
( ! ) Notice: Array to string conversion in C:\wamp\www\labs\arraykeyvalue.php on line 6
Call Stack
#    Time    Memory    Function    Location
1    0.0005    140472    {main}( )    ..\arraykeyvalue.php:0
imie - Array
( ! ) Notice: Array to string conversion in C:\wamp\www\labs\arraykeyvalue.php on line 6
Call Stack
#    Time    Memory    Function    Location
1    0.0005    140472    {main}( )    ..\arraykeyvalue.php:0
nazwisko - Array


Wyświetla imie, nazwisko, ale już nie wyświetli Jan, Kowalski, Krzysztof, Nowak, Stanisław, Tomaszewski
darko
$value w tym przypadku to tablica, potrzebna Ci będzie druga pętla, chociaż, skoro uparłeś się na jedną to spróbuj zrobić coś takiego:
  1. echo $key . ' - ' . implode('', $value);
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.