简体   繁体   English

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

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

This might be something too obvious, but I am kind of brain dead at the moment. 这可能是显而易见的事情,但此刻我脑子里已经死了。

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

i want it to be accessed like $sizeArr[0]->name , but I am getting an error saying Unexpected { . 我希望它像$sizeArr[0]->name一样被访问,但是我收到一个错误,说出了Unexpected {

What am I doing wrong? 我究竟做错了什么?

You can't use {} to define objects in PHP like you would in JavaScript (which I'm assuming you're familiar with). 您不能像在JavaScript中那样使用{}来定义PHP中的对象(我假设您熟悉它)。

In PHP objects and arrays are both array s - yes, this does give problems if you're serialising to JSON. 在PHP中,对象和数组都是array - 是的,如果您要序列化为JSON,这确实会产生问题。

So: 所以:

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

You must convert your array: 你必须转换你的数组:

$yourArray = array (
   'item1' => 'Apple',
   'item2' => 'Peach'
);

$p = (object) $yourArray;
print $p->item1;

For multidimensional Arrays, have a look here: http://www.richardcastera.com/blog/php-convert-array-to-object-with-stdclass 对于多维数组,请看这里: http//www.richardcastera.com/blog/php-convert-array-to-object-with-stdclass

you can't use {} for this but you can try this 你不能使用{}但你可以尝试这个

(object) is for convert array to object (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); $sizeArr结构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
    )

)

output: 输出:

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;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM