2014-02-18 123 views
0

我从控制器将数据发送到模式不能使用类型stdClass的的对象作为阵列,致命错误:在PHP

我得到下面结果,我试图网格视图显示的数据。

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 
        ) 

      ) 

    ) 

但我得到的错误是这样的。

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];

这是我的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>'; 
     } 
    } 

}  

什么,我需要做的..

+0

如果你使用'JTPlatinumGrid1RowData()更具描述性,'? '$ gridData [0]'的值是多少?哪个变量包含该对象数组数据? –

回答

0

这个错误意味着你试图访问的对象领域,因为它是一个数组。这将永远不会工作。

访问对象字段

$object->field_name 

访问数组字段

$array[field_name] 

可能投你的对象数组,你会发现有用

$array_var = (array) $object_var; 
0

你做了错误办法。 说,$结果有整个stdClass对象,然后下面的代码段应正确打印元素。

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

你的问题并不清楚,但根据自己的需要,你可以试试这个

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