[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Рекурсивный обход массива
lastalert
Привет всем

застрял на сабже (есть конструктор менюшек, максимальный уровень вложенности == 1, можно перетаскивать тем самым менять порядок отображения пунктов этого меню).
проблема с сохранением порядка их отображения). Имеется такой массив:
Array
(
[0] => Array
(
[id] => admin_menus_item_core_main_home
[children] => Array
(
[0] => Array
(
[id] => admin_menus_item_core_main_user
)

[1] => Array
(
[id] => admin_menus_item_core_main_invite
)

)

)

[1] => Array
(
[id] => admin_menus_item_core_main_blog
)

[2] => Array
(
[id] => admin_menus_item_core_main_chat
)

)

и такой вот кусок кода, который я пытаюсь допилить:
/**
* Reorder Menu Items
*
@return void
*/

public function orderAction() {
$this->_helper->viewRenderer->setNoRender();
$this->_helper->layout->disableLayout();

$data = $this->_request->getPost();

if (!is_array($data) || empty($data)) {
return;
}

if (!isset($data['menu']) || empty($data['content'])) {
return;
}

$menuName = $data['menu'];
$menuList = $data['content'];
//print_r($menuList);

$table = Engine_Api::_()->getDbtable('menuItems', 'core');
$menuitems = $table->fetchAll($table->select()->where('menu = ?', $menuName));

$i = 0;
foreach ($menuitems as $k => $menuitem) {
if ($this->_arrayCheck($menuitem->name, $menuList)) {
$order = $i;

if (!$order) {
$order = 999;
}
$menuitem->order = $order;
$menuitem->save();

$i++;
}
}


return;
}

private function _arrayCheck($item, $arr) {
foreach ($arr as $val) {
if (strstr($item, $arr['id'])) {
return true;
}
}

return false;
}


_____________
...think about your actions.
Быстрый ответ:

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