Billig
13.10.2009 - 07:21
Необходимо вывести данные из массивов и получить меню
Допустим есть два многомерных массива $slinks и $stext
PHP |
$links = array ("paintings", "posters", "prints"); $text = array ("Painting production", "Posters", "Prints"); $links2 = array ("audio", "television"); $text2 = array ("Audio production", "TV products"); $slinks = array ("Art links"=>$links,"Electronic links"=>$links2); $stext = array ("Art"=>$text,"Electronic"=>$text2); |
Из них на выходе должно получиться меню примерно такого вида:
HTML |
<h1>Art</h1> <ul> <li><a href="paintings.php">Painting production</a></li> <li><a href="posters.php">Posters</a></li> <li><a href="prints.php">Prints</a></li> </ul> <h1>Electronic</h1> <ul> <li><a href="audio.php">Audio production</a></li> <li><a href="television.php">TV products</a></li> </ul> |
Попробовал написать следующее:
PHP |
$links = array ("paintings", "posters", "prints"); $text = array ("Painting production", "Posters", "Prints"); $links2 = array ("audio", "television"); $text2 = array ("Audio production", "TV products");
$slinks = array ("Art links"=>$links,"Electronic links"=>$links2); $stext = array ("Art"=>$text,"Electronic"=>$text2);
for($i=0; $i < count($slinks); $i++) { echo "<h1>название раздела</h1>"; // как здесь вывести название раздела? $sl=array ($slinks[$i]); $st=array ($stext[$i]); for($j=0; $j < count($sl); $j++) { echo "<ul>\n"; echo ("<li><a href='".$sl[$j].".php'>".$st[$j]."</a></li>\n"); echo "</ul>\n"; } } |
Создает список, но сами данные из массивов не выводит, помогите пожалуйста разобраться с кодом
Спустя 14 минут, 31 секунда (13.10.2009 - 06:35) Kuliev написал(а):
Billig
Посмотри что у тебя в массиве и сразу все поймешь
PHP |
echo "<pre>"; print_r($slinks); echo "</pre>"; |
Спустя 11 минут, 31 секунда (13.10.2009 - 06:47) Billig написал(а):
Посмотрел что в массиве, вроде бы все правильно
HTML |
Array ( [Art links] => Array ( [0] => paintings [1] => posters [2] => prints )
[Electronic links] => Array ( [0] => audio [1] => television ) )
|
А можно ли както просмотреть вложенный массив? Пробовал print_r($slinks[$i]) - ничего не выводит
Спустя 3 минуты, 14 секунд (13.10.2009 - 06:50) Kuliev написал(а):
Billig
Вы не правильно к массиву обращаетесь в цикле
PHP |
$slinks['art links'][$i]; |
Спустя 6 минут, 41 секунда (13.10.2009 - 06:57) Kuliev написал(а):
Billig
Да и еще ваш цикл надо переделать!
Спустя 16 минут, 47 секунд (13.10.2009 - 07:14) Billig написал(а):
Спасибо большое, разобрался
Спустя 1 минута, 50 секунд (13.10.2009 - 07:15) Kuliev написал(а):
Billig
На вот тебе готовый вариант
PHP |
$links = array("art" => array("Video","Audio","PC"), "auto" => array("Mersedes","BMW"));
foreach ($links as $key => $value) { echo "<h1>".$key."</h1>"; // как здесь вывести название раздела?
for($j = 0; $j < count($value); $j++) { echo "<ul>\n"; echo "<li><a href='".$value[$j].".php'>".$value[$j]."</a></li>\n"; echo "</ul>\n"; } } |
Спустя 12 минут, 39 секунд (13.10.2009 - 07:28) Billig написал(а):
я только сделал
PHP |
$slinks = array ($links,$links2); $stext = array ($text,$text2); $titles = array ("Art", "Electronic");
for($i=0; $i < count($slinks); $i++) { echo "<h1>$titles[$i]</h1>"; for($j=0; $j < count($slinks[$i]); $j++) { echo "<ul>\n"; echo ("<li><a href='".$slinks[$i][$j].".php'>".$stext[$i][$j]."</a></li>\n"); echo "</ul>\n"; } } |
Ваш вариант почище и красивее будет, но в нем не предусмотрен случай если разное написание ссылки и самого текста.. Например мне надо <a href='"aec.php">Auto electronic diagnosis</a>
можно ли доработать както ваш скрипт или лучше мой оставить?
Спустя 20 минут, 56 секунд (13.10.2009 - 07:49) Kuliev написал(а):
Billig
Ни совсем понял что тебе нужно, но вот посмотри.
PHP |
<?php $links = array ( "art" => array("Video" => "links","Audio" => "links2", "PC" => "links3"), "auto" => array("Mersedes" => "links5","BMW" => "links6") );
foreach ($links as $key => $value) { echo "<h1>".$key."</h1>";
foreach($value as $key => $val) { echo "<ul>\n"; echo "<li><a href='".$val.".php'>".$key."</a></li>\n"; echo "</ul>\n"; } }
|
Спустя 15 минут, 58 секунд (13.10.2009 - 08:05) Billig написал(а):
Благодарю, это именно то что я хотел..
а нет ли у вас случайно готового решения чтоб из строковой переменной удалить сцецсимволы, преобразовать пробелы в знак подчеркивания, а большие буквы в маленькие?
Спустя 7 минут, 58 секунд (13.10.2009 - 08:13) Kuliev написал(а):
str_replace(); - заменить
strtolower(); - перевести в нижний регистр