В PHP, как я могу добавить элемент объекта в массив?

Я использую PHP. У меня есть массив объектов, и я хотел бы добавить объект в конец.

$myArray[] = null; //adds an element $myArray[count($myArray) - 1]->name = "my name"; //modifies the element I just added 

Вышеупомянутое функционально, но есть ли более чистый и более читаемый способ написать это? Может быть, одна строка?

Просто делать:

 $object = new stdClass(); $object->name = "My name"; $myArray[] = $object; 

Сначала вам нужно создать объект ( new строку), а затем нажать его в конец массива (строка [] ).

Возможно, вы тоже это сделаете:

 $myArray[] = (object) array('name' => 'My name'); 

Однако я бы сказал, что это не так читаемо, даже если оно более кратким.

Вам действительно нужен объект? Как насчет:

 $myArray[] = array("name" => "my name"); 

Просто используйте двумерный массив.

Выход (var_dump):

 array(1) { [0]=> array(1) { ["name"]=> string(7) "my name" } } 

Вы можете получить доступ к своей последней записи следующим образом:

 echo $myArray[count($myArray) - 1]["name"]; 

Что-то вроде:

 class TestClass { private $var1; private $var2; private function TestClass($var1, $var2){ $this->var1 = $var1; $this->var2 = $var2; } public static function create($var1, $var2){ if (is_numeric($var1)){ return new TestClass($var1, $var2); } else return NULL; } } $myArray = array(); $myArray[] = TestClass::create(15, "asdf"); $myArray[] = TestClass::create(20, "asdfa"); $myArray[] = TestClass::create("a", "abcd"); print_r($myArray); $myArray = array_filter($myArray, function($e){ return !is_null($e);}); print_r($myArray); 

Я думаю, что бывают ситуации, когда эти конструкции предпочтительнее массивов. Вы можете переместить всю проверяющую логику в класс.

Здесь перед вызовом array_filter $ myArray имеет 3 элемента. Два правильных объекта и NULL. После вызова сохраняются только 2 правильных элемента.