Приведение типов данных php, array to object, object to array

Приведение типов данных php, array to object, object to array.

Приведение типов в php делается просто:

$newTypeVar = (type)$var;

Ну или конкретные примеры:

$array = (array)$object;
$object = (object)$array;

Ну, а теперь о багах, возникающих при приведении типов:

// Объявляем массивчик
    $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

php конвертация объекта в массив

Как конвертировать объект в массив?

$item = array(
    "color" => "black",
    "size" => "medium",
    "pieces" => 100,
    "cost" => 44.99
);

$itemObject = (object) $item;

echo "Array as object:\n";
print_r($itemObject);
echo "\n";

$itemArray = (array) $itemObject;
echo "Object as array:\n";
print_r($itemArray);

вернет Array as object: stdClass Object ( [color] => black [size] => medium [pieces] => 100 [cost] => 44.99 ) Object as array: Array ( [color] => black [size] => medium [pieces] => 100 [cost] => 44.99 )

А как будет работать с защищенными и приватными свойствами объекта?

class Casting
{
    public $pub = "I'm a public member";
    protected $pro = "I'm a protected from outlanders";
    private $pri = "I'm a hidden property";
}

$casting = new Casting();

print_r($casting);
print_r((array) $casting);

Вернет

Casting Object
(
    [pub] => I'm a public member
    [pro:protected] => I'm a protected from outlanders
    [pri:private] => I'm a hidden property
)
Array
(
    [pub] => I'm a public member
    [*pro] => I'm a protected from outlanders
    [Castingpri] => I'm a hidden property
)