2010-12-21 3 views
0

배열과 마찬가지로 stdclasses에 요소를 추가 할 수 있습니까?어떻게 PHP에서 std 클래스를 조작 할 수 있습니까?

Array (
    [0] => item 1 
    [1] => item 2 
) 

Stdclass (
    [0] => item 1 
    [1] => item 2 
) 

일반적으로 배열에 비해 개체를 조작하기가 더 어렵습니까? 우리는 등등을 사용하기 위해 많은 배열 함수를 가지고 있기 때문에

+0

Stdclass는 Java Object의 빈 클래스입니다. –

답변

1

물론, 당신은 ...

$Object = new StdClass(); 
$Object->item1 = 1; 
$Object->item2 = 2; 

를 새로운 요소를 추가 할 수 있습니다.

또한 당신은 ... 다시 반대하고 배열에서 이동

$array = array('item1', 'item2'); 
$Object = (object)$array; 
var_dump($object); 
$array = (array)$Object; 
var_dump($array); 
+0

정보를 제공해 주셔서 감사합니다! 그리고 나머지도 :) – resting

0

예. 그러나 숫자로 색인되지 않았습니다. 좀 더 복잡한 시나리오를 원하는 경우

$a = new stdclass(); 
    $a->foo = 'item 1'; 
    $a->bar = 'item 2'; 
    $a->goobar = array('item1', 'item2'); 
    var_dump($a); 

ArrayAccessArrayObject 봐.

0

음, documentation 상태는 :

이의를 타입 캐스팅에 의해 만들어진.

이와 같이 배열 기능을 사용하여 stdClass 인스턴스를 작동 시키려면 (배열)과 (오브젝트) 사이를왔다 갔다 할 수 있습니다. 당신이 PHP SPL ArrayIterator 또는 RecursiveArrayIterator를 사용해야합니다 배열로 객체를 반복 할 경우

0

를 타입 캐스팅을 그것은 조작하기 더 어려워 없습니다 사용할 수 있습니다. count와 array_search가 객체에서 작동하지 않는다고 말하면됩니다.

배열 및 객체는 모두 당신이 성취하고자하는 것에 따라 그 이점이 있습니다.

http://php.net 설명서에는 어떤 데이터 형식을 어떤 기능에 전달할 수 있는지 설명되어 있습니다.

관련 문제