Преобразование объекта stdClass с несколькими записями/значениями в массив в PHP

Я получаю $pmpro_levels из postmeta как:

когда я пытаюсь использовать print_r($pmpro_levels); У меня есть такой массив:



$pmpro_levels=Array
(
    [2] => stdClass Object
        (
            [id] => 2
            [name] => PREMIUM
            [description] => <h4 style="text-align: center"><strong>3 Mois</strong></h4>
<p style="text-align: center">7€ /mois</p>
<p style="text-align: center"><span style="color: #000000">soit 0,70€ par jour</span></p>
             
        )

    [3] => stdClass Object
        (
            [id] => 3
            [name] => GOLD
            [description] => <h4 style="text-align: center"><strong>6 Mois</strong></h4>
<p style="text-align: center">6€ /mois</p>
<p style="text-align: center"><span style="color: #000000">soit 0,20€ par jour</span></p>
            
        )

    [5] => stdClass Object
        (
            [id] => 5
            [name] => MINI
            [description] => <h4 style="text-align: center"><strong>1 Mois</strong></h4>
<p style="text-align: center">10€ /mois</p>
<p style="text-align: center"><span style="color: #000000">soit 0,33€ par jour</span></p>
            ));


и я не знаю, как его пройти, и как я могу получить такой массив




Array
(
    [2]  => string data not object


    [3] => string data  not object


    [5] => string data  not object

)


Любая идея, как я могу это сделать? Я хотел бы иметь массив без объекта. Мы должны использовать Джейсона? Я новичок в PHP.


person Rodolphe Catta    schedule 06.11.2020    source источник
comment
Привести объект к массиву, например (array)$obj   -  person nice_dev    schedule 06.11.2020
comment
Какие строковые данные вам нужны? Есть id, имя и описание.   -  person AbraCadaver    schedule 06.11.2020
comment
Вы отказались или что?   -  person AbraCadaver    schedule 06.11.2020
comment
да, я нашел проблему другим способом. Большое спасибо   -  person Rodolphe Catta    schedule 07.11.2020


Ответы (1)


Вы можете использовать что-то вроде:

$newArray = [];
foreach($pmpro_levels as $level) {
    $newArray[] = get_object_vars($level);
}

или используя array_map:

$newArray = array_map(function ($level) {return get_object_vars($level);}, $pmpro_levels);

Если вы хотите преобразовать массив в объект stdClass, вы можете привести его к типу object следующим образом:

$myArray = [ 'title' => 'My title', 'description' => 'Some description' ];
$myObject = (object)$myArray;
person Armino Popp    schedule 06.11.2020