在PHP中,我怎么能添加对象元素的数组?

问题描述 投票:22回答:4

我使用PHP。我有对象的数组,并想将对象添加到它的结束。

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

以上是功能性的,但有编写一个更清洁和更可读的方法?也许一条线?

php arrays object
4个回答
78
投票

做就是了:

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

需要先创建对象(new线),然后将其推到阵列(该[]线)的末端。

你也可以这样做:

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

但是我认为这不是为可读,哪怕是更简洁。


6
投票

你真的需要一个对象?关于什么:

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

只需使用一个二维数组。

输出(的var_dump):

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

您可以访问您喜欢最后一个条目:

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

2
投票

就像是:

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个正确的元素仍然存在。


1
投票

这里是另一个干净的方法,如果你有一个foreach内的多个记录我发现:

$foo = [];

array_push($foo, (object)[
        'key1' => 'fooValue'
        'key2' => 'fooValue2'
        'key3' => 'fooValue3'
]);

return $foo;
© www.soinside.com 2019 - 2024. All rights reserved.