source

PHP에서 객체 요소를 배열에 추가하려면 어떻게 해야 합니까?

factcode 2023. 8. 17. 21:55
반응형

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) ['name' => 'My name'];

하지만 저는 그것이 더 간결할지라도 그것이 그렇게 읽을 수 없다고 주장할 것입니다.

제가 발견한 깨끗한 방법은 다음과 같습니다.

$myArray = [];

array_push($myArray, (object)[
        'key1' => 'someValue',
        'key2' => 'someValue2',
        'key3' => 'someValue3',
]);

return $myArray;

당신은 정말 물건이 필요합니까?다음은 어떻습니까?

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

2차원 배열을 사용하면 됩니다.

출력(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. 호출 후에는 두 개의 올바른 요소만 유지됩니다.

언급URL : https://stackoverflow.com/questions/14572313/in-php-how-can-i-add-an-object-element-to-an-array

반응형