Приведение массива с числовыми ключами в качестве объектаPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Приведение массива с числовыми ключами в качестве объекта

Сообщение Anonymous »

Я изучал механизм приведения PHP и столкнулся со странным случаем при приведении массива в объект

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

$o = (object) array('1'=>'/foo/bar');
$o = new stdClass();
var_dump($o);
Насколько я понимаю, свойства PHP необходимо объявлять по тем же правилам, что и переменные PHP. То есть допустимое имя переменной начинается с буквы или подчеркивания, за которыми следует любое количество букв, цифр или подчеркиваний. Однако приведенный выше код выдает следующий результат

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

object(stdClass)#1 (1) {
[1]=>
string(8) "/foo/bar"
}
Что действительно странно, так это когда вы пытаетесь получить доступ к этой информации в объекте.

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

var_dump($o->1);        // parse error
var_dump($o->{'1'});        // NULL
var_dump(get_object_vars($o));  //array(0) { }
Есть ли какой-либо способ получить информацию, которую сообщает var_dump, находится в объекте, или она просто заблокирована на оставшуюся часть жизненного цикла запроса? (практическая польза от этого равна нулю, мне просто интересно)

Подробнее здесь: https://stackoverflow.com/questions/186 ... -an-object
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»