Если у вас php работает на локальной машине (под виндовс) - прошу проверить

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
eresik
Сообщения: 44
Зарегистрирован: 2010.10.23, 10:39

Если у вас php работает на локальной машине (под виндовс) - прошу проверить

Сообщение eresik »

На хостинге всё работает.
На домашней машине странный баг, причём видимо баг PHP, а не Yii.
Прошу проверить если у вас php на машине с виндовс, может это только у меня что-то не так.

Простейший пример:

во вьюхе:

Код: Выделить всё

$a=[1,2,3];
echo $this->render('_subview',['a'=>$a]); 
т.е. из представления рендерим вспомогательное представление _subview, передавая ему массив.

В представлении _subview у меня начинается очень странное поведение, а именно - перестают работать многие функции для работы с массивами.
Все вылетают с предупреждением "expects parameter 1 to be array, null given", да и вообще не работают, хотя сам массив вроде как очень даже есть.

т.е. в _subview такое интересное поведение получается:

Код: Выделить всё

var_dump(is_array($a)); //true, т.е. действительно массив
var_dump($a); //показывает массив, всё отлично
echo count($a); // 3 - в массиве три элемента, так и есть

array_pop($a); //предупреждение - функции нужен массив, а мы типа передали null
В то же время если в _subview к массиву добавить любой элемент, то ошибки исчезают:

Код: Выделить всё

$a[]=1; 
array_pop($a); //всё прекрасно работает (как  другие функции для работы с массивами)
vlvladimir
Сообщения: 17
Зарегистрирован: 2014.07.01, 19:02

Re: Если у вас php работает на локальной машине (под виндовс) - прошу проверить

Сообщение vlvladimir »

у меня все срабатывает как надо. Посмотрите в дебагере (брэйкпойнты в момент array_pop и после него) и все я думаю разрешится.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Если у вас php работает на локальной машине (под виндовс) - прошу проверить

Сообщение samdark »

Работает нормально.
Ответить