[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вывод меню из многомерного массива
Billig
Необходимо вывести данные из массивов и получить меню
Допустим есть два многомерных массива $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 написал(а):
Спасибо большое, разобрался smile.gif

Спустя 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(); - перевести в нижний регистр
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.