Mặc dù tôi thật sự không thể hiểu tại sao bạn muốn làm điều này (mảng kết hợp là trong bản chất dữ liệu chỉ-đối tượng) nhưng nếu bạn cứ khăng khăng:
Thay vì đúc mỗi mảng duy nhất, trên mọi cấp độ duy nhất để một đối tượng, bạn có thể sử dụng "lừa/hack" sau:
$object = json_decode(
json_encode(
array('some'=>array('multi'=>'Dimensional'),
'array'=>'that',
'you' => array('want' => 'to',
'turn' => 'into'),
'an' => 'object')));
Điều này chuyển đổi tất cả các mảng thành các phiên bản của stdClass
, mà tôi tin là những gì bạn muốn.
Một lần nữa, tôi phải nói: PHP là không phải là JavaScript và các đối tượng đắt hơn (tương đối nói) bằng các ngôn ngữ như PHP, sau đó chúng ở dạng JS. Tôi khuyên bạn nên gắn bó với việc sử dụng các mảng assoc nếu bạn không cần một đối tượng.
Giống như đối tượng, mảng có thể kiểu gợi ý: function foo (array $argument){}
Nếu bạn thực sự muốn biến chúng thành một trường hợp đặc biệt của một số lớp, tại sao không thay đổi constructor, để đối phó với một mảng:
class My_Object extends stdClass
{
public function __construct(array $params = null)
{
if (!empty($params))
{
foreach ($params as $name => $value)
{
$this->{$name} = $value;//set everything
}
}
}
}
Và tiếp tục thêm bất cứ điều gì phương pháp bạn muốn thêm vào lô
Nguồn
2012-11-16 13:29:02
Tại sao bạn muốn sử dụng một đối tượng khi bạn tạo nó như một mảng anyways? – Peon
Tôi không thể hiểu nhu cầu của bạn để truyền theo cách đó. – NappingRabbit
bạn có thể nâng cấp lên php 5.4 và sử dụng cú pháp mảng ngắn; điều đó sẽ làm cho trình duyệt mã của bạn. Tôi với @DainisAbols mặc dù; Tôi không chắc chắn những gì bạn đang cố gắng để đạt được với các loại đúc anyway. Bạn thấy lợi thế gì khi sử dụng các đối tượng trên các mảng trong ngữ cảnh này? – SDC