[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ошибка в переборе массива для меню
skolozhabskiy
добрый вечер,

есть массив (названия ключей и имена значений просто для тестирования):

array(4) {
["mobile"]=>
array(2) {
["tb_name"]=>
array(1) {
[0]=>
string(8) "mobitech"
}
["subcat_name"]=>
array(1) {
[0]=>
string(6) "iPhone"
}
}

["helicopters"]=>
array(2) {
["tb_name"]=>
array(2) {
[0]=>
string(11) "tb_agusta_a109"
[1]=>
string(8) "tb_sikorsky"
}
["subcat_name"]=>
array(2) {
[0]=>
string(11) "agusta_a109"
[1]=>
string(8) "sikorsky"
}
}

["airballoon"]=>
array(2) {
["tb_name"]=>
array(1) {
[0]=>
string(13) "tb_airballoon"
}
["subcat_name"]=>
array(1) {
[0]=>
string(10) "airballoon"
}
}

["parfums"]=>
array(2) {
["tb_name"]=>
array(1) {
[0]=>
string(10) "tb_parfums"
}
["subcat_name"]=>
array(1) {
[0]=>
string(7) "parfums"
}
}
}


создаю меню и в нем перебираю пары ключ- значение:


foreach ($category as $key => $value)
{
foreach ((array)$category[$key] as $item => $value)
{
foreach ((array)$category[$key][$item] as $pipe => $value)
$str = '<a data-value="'.$category[$key][$item][$pipe].'" class="menu" href="'.$_SERVER['PHP_SELF'].'">'.$category[$key][$item][$pipe].'</a>';
}
}


в data-value должно заносится значение с ключом tb_name, а в текст ссылки значение с ключом subcat_name.

вопрос: где ошибка в коде, потому что при такой структуре перебора в разделы меню (текст ссылки) вставляется и значение от tb_name и subcat_name

например, по такой схеме:

helicopters
tb_agusta_a109
tb_sikorsky
agusta_a109
sikorsky

а должно быть так:

helicopters
agusta_a109
sikorsky


спасибо



Спустя 26 минут, 19 секунд (6.06.2011 - 19:12) neadekvat написал(а):
Во-первых, в данном случаи перебор надо делать иначе.
Во-вторых, у тебя дважды используется value. Ошибка страшная. Порой хрен поймаешь. Зато если бы не было во-первых, мог бы увидеть.
В-третьих, не очень понимаю, что нужно.
Но вот как этот цикл выглядил бы (выглядит) после первого прохода моей руки:
foreach ($category as $key => $value)
{
foreach ($value as $item => $value2) // везде $value быть не может - она же занята в другом цикле
{
foreach ($value2 as $pipe => $value3)
$str = '<a data-value="'.$value3.'" class="menu" href="'.$_SERVER['PHP_SELF'].'">'.$value3.'</a>';
}
}

Имена с value(2,3) изменишь на свои, по логике, я просто не понимаю, что это за сущности, чтобы дать именам.

Спустя 4 минуты, 56 секунд (6.06.2011 - 19:17) skolozhabskiy написал(а):
да но при этом $value3 в третьем цикле заносится и в data-value и в текст ссылки, а нужно, чтобы в data-value заносилось название таблицы (tb_name), а в текст ссылки название раздела меню (subcat_name) по структуре приведенного массива выше.


схема вашего примера такая же как и у меня:

helicopters
tb_agusta_a109
tb_sikorsky
agusta_a109
sikorsky

а должно быть так:

helicopters
agusta_a109
sikorsky



Array
(
[
mobile] => Array
(
[
tb_name] => Array
(
[
0] => mobitech
)

[
subcat_name] => Array
(
[
0] => iPhone
)

)

[
helicopters] => Array
(
[
tb_name] => Array
(
[
0] => tb_agusta_a109 // название (имя) таблицы
[1] => tb_sikorsky
)

[
subcat_name] => Array
(
[
0] => agusta_a109 // раздел меню
[1] => sikorsky
)

)

[
airballoon] => Array
(
[
tb_name] => Array
(
[
0] => tb_airballoon
)

[
subcat_name] => Array
(
[
0] => airballoon
)

)

[
parfums] => Array
(
[
tb_name] => Array
(
[
0] => tb_parfums
)

[
subcat_name] => Array
(
[
0] => parfums
)

)

)


теперь не страшно? :-)
но смысл тот же

спасибо

Спустя 1 минута, 17 секунд (6.06.2011 - 19:18) neadekvat написал(а):
Щито? То, что выше, ты называешь "приведенной структурой"? Да на нее смотреть страшно.
Сделай print_r, а не var_dump.

Спустя 32 минуты, 41 секунда (6.06.2011 - 19:51) skolozhabskiy написал(а):
спасибо за помощь, проблему решил.
Быстрый ответ:

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