Задать вопрос
@DiaTM

Как сделать нумерацию многомерного массива не с нуля?

Может есть более лёгкое решение? Много сайтов облазил, но в итоге не чего не нашёл( Нужно чтобы у вложенного меню нумерация начиналась не с 0 а с 1(

view
<div class="categories">
			<nav>
				<ul>';
					if($category){
						foreach($category as $key => $name){
							if($name['parent']){
								echo '<li><a href="'.$key.'" title="#">'.$name[0].'<span>'.count($name['parent']).'</span></a>
									<ul>';
										foreach($name['parent'] as $key => $item){
											echo '<li><a href="'.$key.'" #0 unset($key) title="#">'.$item.'</a></li>';
										}
								echo '</ul>
								</li>';
							}
							else{
								echo '<li><a href="'.$key.'" title="#">'.$name[0].'<span>0</span></a>';
							}
						}
					}
				echo '</ul>
			</nav>
		</div>


Вспомогательный класс модели
public function get_category(){
			$result = $this -> ins_driver -> category();
			foreach($result as $item){
				if($item['category_id_parent'] == 0){
					$cat[$item['category_id']][] = $item['name'];
				}
				else{
					$cat[$item['category_id_parent']]['parent'][] = $item['name'];
				}
			}
			return $cat;
		}

Сама модель
public function category(){
			$sql = "SELECT `category_id`, `category_id_parent`, `name`, `description` FROM `category`";
			$result = $this -> ins_db -> query($sql);
			if(!$result){
				throw new DbException('Ошибка запроса: '.$this -> ins_db -> connect_errno.' | '.$this -> ins_db -> connect_error);
			}
			if($result -> num_rows === 0) return FALSE;
			for($i = 0; $i < $result -> num_rows; $i++){
				$row[] = $result -> fetch_assoc();
			}
			return $row;
		}


В итоге:
Array
(
[1] => Array
(
[0] => HTML 5
[parent] => Array
(
[0] => ШРИФТЫ
[1] => ЗАГОЛОВКИ
[2] => ССЫЛКИ
)

)

[2] => Array
(
[0] => CSS 3
)

[3] => Array
(
[0] => JAVA SCRIPT
)

[4] => Array
(
[0] => JQUERY
)

[5] => Array
(
[0] => C#
)

[6] => Array
(
[0] => PHP
)

[7] => Array
(
[0] => MYSQL
)

)
  • Вопрос задан
  • 864 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 2
madmages
@madmages
Человек прямоходящий
echo '<li><a href="'.($key+1).'" #0 unset($key) title="#">'.$item.'</a></li>';
Ответ написан
slo_nik
@slo_nik Куратор тега PHP
Добрый вечер.
Так же как и для обычного массива
$arr = [4 => 'first'];
// на выходе
Array ( [4] => first )

Так что ($key + 1) Вам поможет
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы