Я пытаюсь преобразовать класс в массив. Я использую следующий код:
class Abc{ private $x, $y, $z; protected $x1, $y1, $z1; protected $x2, $y2, $z2; public function __construct() { $this->x=$this->y=$this->z=$this->x1=$this->y1=$this->z1=$this->x2=$this->y2=$this->z2=0; } public function getData() { return $x; } public function toArray() { return (array)$this; } } $abc = new Abc(); echo '<pre>', print_r($abc->toArray(), true), '</pre>';
Теперь странная вещь – выход:
Array ( [Propertyx] => 0 [Propertyy] => 0 [Propertyz] => 0 [*x1] => 0 [*y1] => 0 [*z1] => 0 [*x2] => 0 [*y2] => 0 [*z2] => 0 )
Я хочу чистые ключи без имени Class
и * перед именами клавиш.
Может ли кто-нибудь предложить мне, как преобразовать имена членов в ключи массива без имени класса и без (*). Другие решения также приветствуются.
существует специальная функция
public function toArray() { return get_object_vars($this); }
результат
<pre>Array ( [x] => 0 [y] => 0 [z] => 0 [x1] => 0 [y1] => 0 [z1] => 0 [x2] => 0 [y2] => 0 [z2] => 0 ) </pre>
демонстрация