xDireX
@xDireX

Почему PHP выдает странную ошибку при одинаковых условиях логики?

Доброго времени суток.
Суть вопроса очень просто. Есть код который делает вот так:
<?php

$arr = array();

$arr[] = array('Коля', 'Дима', 'Гоша');
$arr[] = array('Катя', 'Света', 'Яна');

for($i = 0; $i < 10; $i++){
	//unset($result);
	foreach ($arr as $key => $value) {
		$result[$i][$key]['names'] = $value; 
	}


	$result = json_encode($result);
	print_r($result);
}

Данный код выдаст ошибку.
И есть тот же код, только перед foreach мы удаляем уде определившийся массив
<?php

$arr = array();

$arr[] = array('Коля', 'Дима', 'Гоша');
$arr[] = array('Катя', 'Света', 'Яна');

for($i = 0; $i < 10; $i++){
	unset($result);
	foreach ($arr as $key => $value) {
		$result[$i][$key]['names'] = $value; 
	}


	$result = json_encode($result);
	print_r($result);
}

Этот - рабочий код, ошибки нету.
По сути первый и второй код абсолютно не чем не отличается, но результат - на лицо.

Помогите понять в чем суть такого поведения?

PHP 5.5.9 || 5.4.44
PHP Fatal error: Cannot use string offset as an array in /home/direx/wtf.php on line 11
  • Вопрос задан
  • 438 просмотров
Решения вопроса 1
Всё дело в этой строке:
$result = json_encode($result);
Когда цикл for идет на второй круг - $result уже не является массивом, и поэтому нельзя к нему вот так обращаться: $result[$i][$key]['names']
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы