@Mr-Governor
Губернирую

Не правильно сохраняется текст в переменную?

Всем привет.
Проблема в том что когда моя функция конкатенирует текст в переменную, получается результат в переменной совсем не тот что я ожидал. Но когда я этот же текст вывожу на прямую через echo, все корректно.
Что за безобразие?

Хотел написать функцию построения иерархии категорий, которые хранятся в MySQL.
Вот категории, таблица `cat`:
5a3ffd892f9e8789698449.png
Вот код php: МОЖНО НЕ ВНИКАТЬ, ТАМ ВСЕ ОК
$link = mysqli_connect('localhost', 'root', '', 'gold') or die("Ошибка " . mysqli_error($link));

$result = mysqli_query($link, "SELECT * FROM cat");

if (mysqli_num_rows($result) > 0){

	$cats = array();

	//В цикле формируем массив разделов, ключом будет id родительской категории, а также массив разделов, ключом будет id категории
	while($row = mysqli_fetch_assoc($result))
		$cats[ $row['prev'] ][ $row['id'] ] =  $row;
}

//Сама функция построения дерева:
function build_tree($cats,$prev)
{

if( isset($cats[$prev]) )
{
						
$tree .= '<ul>';
						
foreach ($cats[$prev] as $cat)
{
	$tree .= '<li>'. $cat['name'];
	build_tree($cats, $cat['id']);
	$tree .= '</li>';
}

$tree .= '</ul>';
}
return $tree;
}

//Вызываю
if(is_array($cats))
{
	$tree = build_tree($cats,0);
	echo $tree;
}

Результат получается таким:
5a400023a9c10908375961.png
Но если в функции построения, переменную заменить на непосредственный вывод:
function build_tree($cats,$prev)
{

	if( isset($cats[$prev]) )
	{
						
		echo '<ul>';
						
		foreach ($cats[$prev] as $cat)
		{
			echo '<li>'. $cat['name'];
			build_tree($cats, $cat['id']);
			echo '</li>';
		}

		echo '</ul>';
	}
}

5a4000e4c77fe816413397.png
Все становится нормально. Пользуюсь OpenServer
PHP 5.6, MySQL 5.7, Apache 2.4

Когда сохраняю переменную $tree в файл, Там корректный одноуровневый ul, li список.
Когда сохраняют переменную в БД, в БД абсолютно ничего не сохраняется.
  • Вопрос задан
  • 53 просмотра
Решения вопроса 1
@vism
Госпади, индусы вы .... где вас так учат код делать то????

$tree .= build_tree($cats, $cat['id']);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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