[php] Problem z tablicą


(Kangurek91) #1

Mam taki kod:

$baza = array (

	'taniec' => array (0, 'taniec', 'akapit tekstu'), 

	'taniec2' => array (1, 'taniec2', 'akapit tekstu'),

...

);

Problem jest następujący: jak zrobić, żeby się wyświetlała tablica "podrzędna", czyli żeby w pierwszym tańcu była możliwość wyboru podgrup. Mam nadzieję, że wszystko jasne w miarę...

Kod jest ze strony, którą potrzebuję modyfikować i nie ukrywam, że sobie nie radzę. Firma, która miała to zrobić, ciągle nie ma czasu, więc chcę to zrobić, żeby nie musieć prosić.


(Airborn) #2

Prawdę powiedziawszy, niezbyt jasno, ale spróbujmy tak jak ja to rozumiem...

Tablica, jak to nazwałeś podrzędna, to drugi wymiar tablicy $baza, zobacz. $tablica[], $tablica2[][], $tablica3[][][] opisują kolejno tablice jedno, dwu i trzy wymiarowe, liczba wymiarów jest praktycznie dowolna. Prostym przykładem do zilustrowania adresowania takiej tablicy, jest zwykły układ współrzędnych, gdzie położenie punktu określamy poprzez podanie współrzędnych x oraz y (dwa różne wymiary). Podobnie jest tutaj, pierwszy wymiar Twojej tablicy może przyjmować dwie wartości $baza['taniec'] albo $baza['taniec2'], każdy z tych wymiarów może następnie posiadać skojarzony z nim drugi wymiar, czyli:

$baza['taniec'][0] = 0

$baza['taniec'][1] = taniec

$baza['taniec'][2] = akapit tekstu

$baza['taniec2'][0] = 0

$baza['taniec2'][1] = taniec2

$baza['taniec2'][2] = akapit tekstu

Możesz też poczytać manuala który prócz prezentacji kilku różnych układów tabel pokaże Ci masę przydatnych funkcji do operowania na tablicach które mogą CI się przydać.


(Kangurek91) #3

Wydaje mi się, że rozumiem. Ale, jeśli chcę, żeby kolejna tablica była częścią innej, muszę ją umieścić jako jeden z wymiarów? Czyli, dajmy na to, po akapicie tekstu? Jak to zrobić poprawnie? Chyba zacznę się uczyć :slight_smile: ale to mi zajmie pół życia przy moim tempie :stuck_out_tongue:


(L337 Crew) #4

Odpal taki kod i zobacz jak to wygląda :slight_smile:



<?php

$owoce = array (

   "owoce" => array("a"=>"pomarancza", "b"=>"banan", "c"=>"jablko"),

   "liczby" => array(1, 2, 3, 4, 5, 6),

   "dziury" => array("pierwszy", 5 => "drugi", "trzeci" => array('lol','rotfl'))

);

print_r($owoce);

?>

Airborn podał link do manuala php.

Ten przykład pochodzi właśnie stamtąd ;]

BTW. nie do końca zrozumiałem Twoją ostatnią wypowiedź...


(Kangurek91) #5

Dobra, to ja jeszcze raz :slight_smile: Mam trzy rodzaje tańców i opisy do nich. Chcę, żeby było tak, że w pierwszym tańcu rozdzielam na dwa i do każdego opis. W sensie, że tworzę kategorię i dwie podkategorie z opisami. Jaśniej? Już nie umiem lepiej wytłumaczyć...

Nie gniewajcie się na mnie... Muszę zmienić tylko w tym jednym miejscu i naprawdę dam Wam spokój :wink:

Według tego, co podał Crew, powinno być u mnie tak?

$baza = array (

   "tance" => array("taniec1"=>"opis", "taniec2"=>"opis"),

   "taniec3" => array("taniec3", "opis"),

...

);

bo jeśli nie, to ja już nic nie kapuję. Próbuję robić jak wyżej, ale nie wyświetla mi nic. Gdzie robię błąd?


(L337 Crew) #6

Kod wygląda ok,

wyświetl sobie teraz

echo $baza['tance']['taniec1'].'
';

echo $baza['tance']['taniec2'].'
';

echo $baza['taniec3']['taniec3'];

Tylko czy trzymanie takich rzeczy w tablicach ma sens - nie wiem :stuck_out_tongue:


(Kangurek91) #7

dzięki :smiley: to próbuję :slight_smile:

to nie mój pomysł :confused: niestety ja to tylko muszę zmienić. w ogóle strona była robiona w jakimś dziwnym edytorze i nie można się nawet z elementami html`a dogadać :confused: no, ale to już inna sprawa...

edit: działa dopiero od taniec3, czyli coś musiało być jednak nie tak.