我更喜歡將關聯陣列作為物件訪問。即而不是$arr['item_title']我更喜歡$arr->item_title。我有以下代碼生成一個陣列,并通過型別轉換將其轉換為物件:
public function getTotal()
{
$total = 0;
$items = [];
$i = 0;
$val = ($this->type == 'PUR')? 'cost': 'price';
foreach($this->invoiceItems as $item){
$items[$i]['item_title'] = $item->item->title;
$items[$i]['item_id'] = $item->item_id;
$items[$i]['unit_title'] = $item->unit->title;
$items[$i]['unit_id'] = $item->unit_id;
$items[$i]['cost'] = $item->itemUnit->cost;
$items[$i]['price'] = $item->itemUnit->price;
$items[$i]['qty'] = $item->qty;
$total = $total ($item->qty*$item->itemUnit->${'val'}) ;
$i ;
}
$output['total'] = $total;
$output['items'] = (object) $items;
$this->setTotal((object) $output);
return $this->_total;
}
創建物件的示例是:
<?= var_dump($model->total->items);?>
object(stdClass)[117]
public '0' =>
array (size=7)
'item_title' => string 'Aspoceed tab.' (length=13)
'item_id' => int 2
'unit_title' => string 'Packet2s-10' (length=11)
'unit_id' => int 3
'cost' => float 9.25
'price' => float 10
'qty' => int 2
public '1' =>
array (size=7)
'item_title' => string 'Aspoceed tab.' (length=13)
'item_id' => int 2
'unit_title' => string 'Strip10' (length=7)
'unit_id' => int 2
'cost' => float 4.75
'price' => float 5.25
'qty' => int 1
public '2' =>
array (size=7)
'item_title' => string 'Apidone' (length=7)
'item_id' => int 3
'unit_title' => string 'Bottle Pack 12' (length=14)
'unit_id' => int 6
'cost' => float 118
'price' => float 121.75
'qty' => int 2
問題是,我無法直接訪問上述物件的第一個公共屬性,即無需回圈。例如:
$model->total->items->['0']->item_title
OR
$model->total->items->[0]->item_title
OR
$model->total->items[0]->item_title
OR
$model->total->items['0']->item_title
所有這些嘗試都會回傳錯誤。是否可以訪問以上述方式創建的物件?
uj5u.com熱心網友回復:
如果您想要物件,我不確定為什么要首先創建陣列。首先將它們創建為物件。
public function getTotal()
{
$output = new StdClass;
$total = 0;
$items = new StdClass;
$i = 0;
$val = ($this->type == 'PUR')? 'cost': 'price';
foreach($this->invoiceItems as $i => $item){
$new_item = new StdClass;
$new_item->item_title = $item->item->title;
$new_item->item_id = $item->item_id;
$new_item->unit_title = $item->unit->title;
$new_item->unit_id = $item->unit_id;
$new_item->cost = $item->itemUnit->cost;
$new_item->price = $item->itemUnit->price;
$new_item->qty = $item->qty;
$items->{$i} = $new_item;
$total = $total ($item->qty*$item->itemUnit->'val') ;
}
$output->total = $total;
$output->items = (object) $items;
$this->setTotal($output);
return $this->_total;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/487905.html
標籤:php
上一篇:如何重構/簡化以下php函式?
下一篇:抓取抓取的網址(嵌套)
