Приведение типов в php делается просто:
$newTypeVar = (type)$var;
Ну или конкретные примеры:
1 2 | $array = (array)$object; $object = (object)$array; |
Ну, а теперь о багах, возникающих при приведении типов:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | // Объявляем массивчик $array = array('11' => 'one', 22 => 'two'); print_r ($array); /* Получаем: Array ( [11] => one [22] => two ) */ echo $array[11]."\r\n"; // Получаем: one $stdClass = (object)$array; print_r ($stdClass); /* Получаем: stdClass Object ( [11] => one [22] => two ) */ /* echo $array->11; вернет ошибку парсинга, т.к. наименование свойства объекта не может являться числом, но при автоматическом приведении типов в php названия свойств элементов объекта храняться с строке, но обратиться к ним невозможно, т.к. описать это для интерпритатора php не представляется возможным * $array->11; * $array->'11'; Ничего из этого не сработает */ $arrayTwo = (array)$stdClass; print_r ($arrayTwo); /* Получаем: Array ( [11] => one [22] => two ) */ echo $arrayTwo[11]; // Получаем: one |
К сожалению похожих по тематике статей пока нет.


Можно получить через foreach.
Можно, но задача другая стояла.
Ндааа действительно!
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$array = array('a11' =>'1array', 22=>'2array');
$obj = (object) $array;
$obj->{'22'} = 4;
var_dump($obj->{'22'}, $obj);
/*
int(4)
object(stdClass)#1 (3) {
["a11"]=>
string(6) "1array"
[22]=>
string(6) "2array"
["22"]=>
int(4)
}
*/
Вам либо переменные именовать надо правильно, либо переводить массив в объект используя свою функцию.
PS> Если чего-либо не знаете, то не говорите что это баг
К счастью я не спрашивал ни у кого как правильно именовать переменные и как перегнать массив в объект с помощью пользовательской функции т.к. суть проблемы была не в этом.
Суть состояла именно в особенности работы.
Спасибо за статью помогла в решении проблемы
хотя он у меня заработал сразу
а то что это баг в этой статье обратил позже
Не знал про такие преобразования, перегонял из объекта в массив через foreach. Полезно, спасибо.
Пожалуйста! Старайтесь реже использовать итеративные алгоритмы – они съедают много процессорного времени. А уж если они нужны, то старайтесь искать решения, встроенные в php, там на C написаны функции – будет Гораздо быстрее.
Да уж, заметил, функций в php на все случаи жизни)
Собственно да, хоть мануал на ночь перечитывай)