我在php中声明对象数组时做错了什么?


What am I doing wrong in declaring an array of objects in php?

这可能太明显了,但我现在有点脑死亡。

$sizeArr = array({
                    "name"=>'18"x24"',"wd"=>18,"ht"=>24,"price"=>99.00
                },
                {
                    "name"=>'24"x36"',"wd"=>24,"ht"=>36,"price"=>189.00
                });

我想访问它像$sizeArr[0]->name,但我得到一个错误说Unexpected {

我做错了什么?

你不能使用{}来定义对象在PHP像你会在JavaScript(我假设你熟悉)。

在PHP对象和数组都是array -是的,这确实给问题,如果你序列化到JSON。

:

$sizeArr = array(array(
    "name"=>'18"x24"',"wd"=>18,"ht"=>24,"price"=>99.00
),
array(
    "name"=>'24"x36"',"wd"=>24,"ht"=>36,"price"=>189.00
));

你必须转换你的数组:

$yourArray = array (
   'item1' => 'Apple',
   'item2' => 'Peach'
);
$p = (object) $yourArray;
print $p->item1;

多维数组,请看这里:http://www.richardcastera.com/blog/php-convert-array-to-object-with-stdclass

你不能使用{}但是你可以试试这个

(object)用于将array转换为object

 $sizeArr = array(
     (object)array(
       "name"=>'18"x24"',"wd"=>18,"ht"=>24,"price"=>99.00
     ),
     (object)array(
      "name"=>'24"x36"',"wd"=>24,"ht"=>36,"price"=>189.00
     )
 );
 echo $sizeArr[0]->name;

$sizeArr structure print_r($sizeArr); output

 Array
(
    [0] => stdClass Object
    (
        [name] => 18"x24"
        [wd] => 18
        [ht] => 24
        [price] => 99
    )
    [1] => stdClass Object
    (
        [name] => 24"x36"
        [wd] => 24
        [ht] => 36
        [price] => 189
    )
)
输出:

18"x24"
    $sizeArr = array(
                    (object)array("name"=>'18"x24"',"wd"=>18,"ht"=>24,"price"=>99.00),
                    (object)array("name"=>'24"x36"',"wd"=>24,"ht"=>36,"price"=>189.00)
                    );

    $sizeArr[0]->name;