简体   繁体   English

致命错误:无法将stdClass类型的对象用作php中的数组

[英]Fatal error:Cannot use object of type stdClass as array in php

I am sending data from controller to mode, 我正在将数据从控制器发送到模式,

I got below result, I was trying to display the data in grid view. 我得到了以下结果,我试图在网格视图中显示数据。

stdClass Object
(
[Tmchb] => stdClass Object
    (
        [item] => Array
            (
                [0] => stdClass Object
                    (
                        [Matnr] => 1006-1
                        [J3asize] => S
                        [Maktx] => STOCKHOLM-BLANC
                        [Clabs] => 42.0
                        [Incweek] => 
                        [Zincmgstk] => 0.0
                    )

                [1] => stdClass Object
                    (
                        [Matnr] => 1006-10
                        [J3asize] => XXL
                        [Maktx] => STOCKHOLM-ROUGE
                        [Clabs] => 85.0
                        [Incweek] => 
                        [Zincmgstk] => 0.0
                    )

                [2] => stdClass Object
                    (
                        [Matnr] => 1006-10
                        [J3asize] => XL
                        [Maktx] => STOCKHOLM-ROUGE
                        [Clabs] => 66.0
                        [Incweek] => 
                        [Zincmgstk] => 0.0
                    )

                [3] => stdClass Object
                    (
                        [Matnr] => 1006-10
                        [J3asize] => S
                        [Maktx] => STOCKHOLM-ROUGE
                        [Clabs] => 58.0
                        [Incweek] => 
                        [Zincmgstk] => 0.0
                    )

                [4] => stdClass Object
                    (
                        [Matnr] => 1006-10
                        [J3asize] => M
                        [Maktx] => STOCKHOLM-ROUGE
                        [Clabs] => 167.0
                        [Incweek] => 
                        [Zincmgstk] => 0.0
                    )

                [5] => stdClass Object
                    (
                        [Matnr] => 1006-10
                        [J3asize] => L
                        [Maktx] => STOCKHOLM-ROUGE
                        [Clabs] => 230.0
                        [Incweek] => 
                        [Zincmgstk] => 0.0
                    )

            )

    )

)

But I got error like this. 但是我有这样的错误。

Fatal error: Cannot use object of type stdClass as array in `C:\xampp\htdocs\portal\components\com_portal\views\portal\tmpl\default_stock_details_list.php` on line 139

$grid->CellData =$gridData[0];

This is my PHP code. 这是我的PHP代码。

function JTPlatinumGrid1RowData($sender, $params) {
$rows = &$params[ 1 ];
$rowdata=$rows;
$alignArray1=array();
    foreach($rowdata as $key=>$val){
        $alignArray1[]=$key;
    }

        for($i=1; $i<=count($alignArray1); $i++){

        if($rows[$alignArray1[$i]]!= ''){
        $rows[$alignArray1[$i]] = '<div style="text-align:right;">' . $rows[$alignArray1[$i]]  . '  </div>';
        }
    }

}    

what i need to do.. 我需要做什么..

This error means you're trying to access an object field as it was an array. 此错误表示您正在尝试访问对象字段,因为它是一个数组。 That will never work. 那永远都行不通。

for accessing object fields 用于访问对象字段

$object->field_name

for accessing array fields 用于访问数组字段

$array[field_name]

Maybe you'll find useful cast your object to array 也许您会发现将对象强制转换为数组很有用

$array_var = (array) $object_var;

You are doing it the wrong way. 您做错了方法。 Say, $result has the entire stdClass object , then the following code segment should print the elements correctly. 假设$ result具有整个stdClass对象 ,则以下代码段应正确打印元素。

foreach ($result->Tmchb->item as $row) {
  print $row->Matnr . " " . $row->J3asize;
}

Your question is not clear, but as per your need you can try this 您的问题尚不清楚,但是根据您的需要,您可以尝试一下

foreach($grid->CellData->$gridData as row){
  echo row['your value'];
}

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

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