Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][smarty]Kluczem tablicy jest tekst...
Forum PHP.pl > Forum > PHP
Bonzaii
Witam.

Mam problem z tablicą. Stworzyłem sobie oto taką tablicę:

  1. <?php
  2. (
  3. [city_level] => Array
  4. (
  5. [name] => Rozbudowanie Miasta
  6. [tname] => city_level
  7. [desc] => Rozbudowanie daje mo&#65533;liwo�� pomieszczenia wi�kszej ilo�ci mieszka�c�w, co w rezultacie mo�e przynie�� wi�ksze zyski z podatk�w.
  8. [pop] => 200
  9. [pomising] => 10
  10. )
  11.  
  12. [city_enjoy] => Array
  13. (
  14. [name] => Obiekty Rozrywkowe
  15. [tname] => city_enjoy
  16. [desc] => Rozbudowanie obiekt&#65533;w rozrywki zapewnia wi�ksz� popularno�� miasta i wi�ksz� ch�� jego zamieszkiwania. Populacja ro�nie wtedy szybciej.
  17. [pop] => 0
  18. [pomising] => 100
  19. )
  20.  
  21. )
  22. ?>

Klucze są tekstowe. "city_level" i "city_enjoy".

Zapisałem do smarty całą tablicę (nazywa się ona: $BuldingInfos)
  1. <?php
  2. $smarty -> assign("BuildingInfos",$BuildingInfos);
  3. ?>


Teraz próbuje to odczytać w smarty za pomocą takich funkcji:
  1. {$BuildingInfos[city_level].desc}
  2. {$BuildingInfos.city_level.desc}
  3. {$BuildingInfos[1].desc}


No i jeden wielki ... Nic. :/ Po prostu się nic nie wyświetla. A tablica nie jest pusta na pewno, gdyż wycinek jaki pokazałem wziąłem z funkcji:
  1. <?php
  2. echo "<pre>";
  3. print_r($BuildingInfos);
  4. echo "</pre>";
  5. ?>


Co jest nie tak? sad.gif
em1X
Twoim problemem jest źle utworzona tablica. Twórz zawsze taką:

  1. <?php
  2. (
  3. [0] => Array
  4. (
  5. [key]=> city_level
  6. [name] => Rozbudowanie Miasta
  7. [tname] => city_level
  8. [desc] => Rozbudowanie daje mo&#65533;liwo�� pomieszczenia wi�kszej ilo�ci mieszka�c�w, co w rezultacie mo�e przynie�� wi�ksze zyski z podatk�w.
  9. [pop] => 200
  10. [pomising] => 10
  11. )
  12.  
  13. [1] => Array
  14. (
  15. [key]=> city_enjoy
  16. [name] => Obiekty Rozrywkowe
  17. [tname] => city_enjoy
  18. [desc] => Rozbudowanie obiekt&#65533;w rozrywki zapewnia wi�ksz� popularno�� miasta i wi�ksz� ch�� jego zamieszkiwania. Populacja ro�nie wtedy szybciej.
  19. [pop] => 0
  20. [pomising] => 100
  21. )
  22.  
  23. )
  24. ?>
Bonzaii
Wiem, że takie tablice są łatwiejsze w użyciu gdy chcę wyświetlić jej wszystkie elementy. Tylko mam następujący problem. Dane w MySQL się zmienią, więc indeksy tablicy też się zmienią. Potrzebuje wyszukiwać elementów z tablicy biorąc pod uwagę tylko i wyłącznie nazwę w postaci stringu. Przykładem były właśnie "city_enjoy" , "city_level"... Muszę po tym rozpoznawać tablicę i kiedy znajdę odpowiednie wartości, żeby z niej wyciągnąć dodatkowe informacje które są związane z moim wymyślonym obiektem ('name', 'desc').

No chyba, że ja o czymś nie wiem (a za pewne tak jest) i da się to jakoś wykorzystać? Proszę o dalszą pomoc.
em1X
W takim razie obsłuż swoją tablicę w ten sposób

Kod
{foreach from=$tablica key=klucz item=subArray}
    {foreach from=$subArray key=key item=value}
       {$klucz}[{$key}] = {$value}<br />
    {/foreach}

    <br />
{/foreach}


co zwróci:
Kod
city_level[name] = Rozbudowanie Miasta
.. itd
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.