Bartek Naski

Bartek Naski CakePHP developer

Temat: trochę gimnastyki :)

Witam szanowne towarzystwo kejkowe :) (słodzik na początek)

zrobiłem już 2 podejścia do tematu, i ogarnia mnie już zniecierpliwienie:

tekst:
bla bla bla tere fere akuku mamuku coś tam coś tam tere fere bla bla bla i taki tam tekst a pod nim lista wypunktowania
[lista]
>>>poziom pierwszy
>>poziom drugi
>>poziom drugi
>poziom trzeci
>>>poziom pierwszy
>>poziom drugi
>>>poziom pierwszy
[lista]
i znowu tekst i jakieś tam bla bla bla na 2-3 linijki

żądany wynik do użycia fajowego $this->Html->nestedList()

array(
[0] => 'pierwszy tekst...'
[1] =>array(
'poziom pierwszy'=>array(
['poziom drugi']=>''
['poziom drugi']=>'poziom trzeci')
'poziom pierwszy'=>array(
['poziom drugi']=>'')
'poziom pierwszy'=>''
)
[2] => 'znowu tekst'
)

kombinuję i nijak mi to nie wychodzi
najpierw explode po znaczniku [lista] daje mi prawidłowe 3 elementy tablicy
następnie foreach i sprawdzam czy w tablicy występuje >>> jeżeli tak to znów explode i byłoby nawet nieźle gdyby nie to że wynik mam taki i nie wiem skąd to [0]=>

array(
[0]=>pierwszy tekst
[1] => array (
[0] => ,
[1] => 'poziom pierwszy')
....
)

próbowałem z trim czy nawet obcinałem tekst z myślą że jakiś pusty znak tam jest, ale nie! zawsze jest pusty rekord w tablicy o kluczu [0], z array_combine wychodziły mi jeszcze ciekawsze sprawy. Z pozoru wydawało się proste, w myślach już kilka razy układałem algorytm ale nie wychodzi.
Chciałbym by tekst takimi listami mógł być przetykany kilkukrotnie i funkcja na tyle prosta, wręcz uniwersalna. np:

$tekst = explode('[lista]', 'tu treść ...');
foreach($tekst as $klucz => $wartosc){
if(strstr($wartosc, '>>>')){
//... tu następne explode >> i >>
}
} i byłoby idealnie...

jak ktoś coś takiego robił to proszę o podpowiedź, za trzecim podejściem spróbuję zamiast explode w foreach, preg i budowaniem nowej i nowej tablicy, albo pojedynczych segmentów i łączenia, tak czy siak albo ja listy i wypunktowania albo one mnie !
---
jedna podpowiedź padła na priv klucze nie mogą się powielać (oczywista)Bartek Naski edytował(a) ten post dnia 28.08.12 o godzinie 00:03

konto usunięte

Temat: trochę gimnastyki :)

dałeś radę?
Bartek Naski

Bartek Naski CakePHP developer

Temat: trochę gimnastyki :)

"prywatne" sprawy zawiesiłem. mam wyśrubowane dedline teraz, ale wrócę do tego...
Bartek Naski

Bartek Naski CakePHP developer

Temat: trochę gimnastyki :)

no i proszę chcąc nie chcąc musiałem do tego wrócić przy obecnym zleceniu i okazało się być proste jak drut, htmlowa mapa strony z linkami

jak ktoś chce może przeanalizować kod:

<?php
foreach($sitesmap as $list => $value){

if($list == 'nazwa listy){

if(count($programmenu1)>1){
foreach($programmenu1 as $program){
if($programmenu1[0]['Article']['id'] != $program['Article']['id']){
$link[$this->Html->link($list, '/'.$value)][$programmenu1[0]['Article']['title']][] = $this->Html->link($program['Article']['title'],
'/program/'.$program['Article']['id'].'/'.$programmenu1[0]['Article']['title'].' - '.$program['Article']['slug']).'</li>';
}
}
}elseif(!empty($programmenu1)){
$link[$this->Html->link($list, '/'.$value)][] = $programmenu1[0]['Article']['title'];
}
........ inne pętle

}

$link[] = $this->Html->link($list, '/'.$value);

}

$list = array(
$this->Html->link('Strona główna', '/') => $link);
?>

wynik układany jest na 3 poziomowej liście:

<?php echo $this->Html->nestedList($list); ?>

Następna dyskusja:

ilu kg-owe hantle do gimnas...




Wyślij zaproszenie do