Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Losowanie zagnieżdżone
Forum PHP.pl > Forum > PHP
Gigante
Mam ciąg:
  1. <?php
  2. $ciąg = 'Ala ma <albo><albo>kota<lub>kotka</albo><lub>psa</albo>.';
  3. ?>

Chcę aby z tegio ciągu powstało losowo:
  1. Ala ma kota.
  1. Ala ma kotka.
  1. Ala ma psa.

Do losowania <albo>kota<lub>kotka</albo> już doszedłem, to jest zbytnio skomplikowane sciana.gif
Nie biore pod uwage zastępowania środkowych <albo> innymi slowami
Quider
Ciekawe zagadnienie. Z tego co mi teraz przychodzi do głowy, to taka koncepcja na to, żeby skrypt szukał ciągu "<albo>" zapisywał to do tablicy, po czym wszystko co jest dalej czyli tutaj kolejne <albo> wtedy powstaje tablica dwuwymiarowa itd
To tylko wolno rzucony pomysł...
Gigante
problem nie jest prosty (jak dla mnie) probowalem go rozwiazac poprzez
  1. <?php
  2. $rozbij = explode('<albo>', $ciag);
  3. ?>

no ale nie dziala tak jak trzeba w zagnierzdzonych <albo>
Mephistofeles
Nie możesz zrobić z tego prostego XMLa, i parsować go np. SimpleXMLem?
Gigante
Cytat(Mephistofeles @ 15.03.2009, 22:55:47 ) *
Nie możesz zrobić z tego prostego XMLa, i parsować go np. SimpleXMLem?

a moze jakis przyklad?

a na petlach nie bedzie prosciej?
torbicki65
Może warto spróbować z preg_split zamiast explode?
bim2
Zrób ciąg
Ala ma <rand>Kota<or/>Psa<or/>Chomika</rand>

Wyciągasz ciąg pomiędzy <rand></rand>
Później explode('<or/>');
A reszty sie sam powinieneś domyślić smile.gif
Gigante
Cytat(bim2 @ 16.03.2009, 09:06:52 ) *
Zrób ciąg
Ala ma <rand>Kota<or/>Psa<or/>Chomika</rand>

Wyciągasz ciąg pomiędzy <rand></rand>
Później explode('<or/>');
A reszty sie sam powinieneś domyślić smile.gif

Jak napisalem wyzej... tak juz zrobilem jak napisales i dzialalo - ale ja chce by to dzialalo jako zagnierzdzone
kamil4u
Poczytaj o rekurencji - potrzebne Ci jeszcze będzie wspomniane SimpleXML - kiedyś miałem podobny problem tyle, że w JS: http://forum.webhelp.pl/viewtopic.php?p=873082#873082
Gigante
Znalazłem pełne rozwiązanie mojego problemupod TYM adresem.
nexis
Cytat
Losowanie zagnierzdzone


Mogę prosić o poprawę tematu, bo aż razi w oczy: Losowanie zagnieżdżone
dr_bonzo
Cytat(Gigante @ 15.03.2009, 19:16:54 ) *
Mam ciąg:
  1. <?php
  2. $ciąg = 'Ala ma <albo><albo>kota<lub>kotka</albo><lub>psa</albo>.';
  3. ?>

Chcę aby z tegio ciągu powstało losowo:
  1. Ala ma kota.
  1. Ala ma kotka.
  1. Ala ma psa.

Do losowania <albo>kota<lub>kotka</albo> już doszedłem, to jest zbytnio skomplikowane sciana.gif
Nie biore pod uwage zastępowania środkowych <albo> innymi slowami



WTF?
Czym sie niby rozni logicznie ALBO od LUB?

Czy mam rozumiec "<albo><albo>kota<lub>kotka</albo><lub>psa</albo>":
ze najpierw wybieramy czy: [kota, kotka] czy [psa]
a jesli wybierzemy pierwsze to potem wybieramy [kota] lub [kotka]?

I czy ta twoja skladnia XMLowa jest do modyfikacji?
Mephistofeles
Lepiej gdybyś zrobił taką składnię:
  1. Ala ma
  2. <albo>
  3.   <opcja>
  4.      <albo>
  5.         <opcja>kota</opcja>
  6.         <opcja>kotka</opcja>
  7.      </albo>
  8.   </opcja>
  9.   <opcja>psa</opcja>
  10. </albo>

Jest raczej czytelniejsza, i dla mnie łatwiejsza w rozwiązaniu problemu.
Gigante
Jak już napisalem problem został rozwiązany a rozwiązanie jest pod linkiem, który podałem powyżej. Jest to tam zrobione w sposob w 100% zgodny z tym czego szukałem.
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.