2013-08-16 164 views
1

大家好我只想問一下,如何使用循環獲取JSON的值?我已經做了一些研究,但我的代碼不會工作。我不知道我的錯誤是什麼。我想要的是獲取所有JSON值並將其放在表中。順便說一句,我使用笨如何獲取JSON值?

我的模型:

public function getAllPurchaseOrder(){ 

     $array = array(); 
     $sqlSelectAll = "select * from po_order 
         inner join po_supplier on po_order.poid = po_supplier.poid 
         inner join po_account_details on po_supplier.poid = po_account_details.poid"; 
     $resultSelectAll = $this->db->query($sqlSelectAll); 
     foreach($resultSelectAll->result_array() as $details){ 
      $array[] = $details; 
     } 
     return "{\"data\":" .json_encode($array). "}"; 

} 

我的控制器:

public function index(){ 

     $data['title'] = "Welcome"; 
     $data['copyright'] = date('Y'); 
     $data['purchased_comment'] = $this->po_model->fetch_purchased_refid(); 
     $data['link'] = "PO"; 
     $data['itemlist'] = $this->po_model->getAllPurchaseOrder();    
     $this->load->view('common/header_common',$data); 
     $this->load->view('common/navigation'); 
     $this->load->view('Purchase Order/contents/index',$data); 
     $this->load->view('common/footer_common',$data); 

    } 

這裏是我的代碼:

echo "<pre>"; 
var_dump(json_decode($itemlist,true)); 
使用的var_dump(json_encode)0

我的JSON輸出

array(1) { 
    ["data"]=> 
    array(1) { 
    [0]=> 
    array(25) { 
     ["poid"]=> 
     string(1) "1" 
     ["itemid"]=> 
     string(1) "3" 
     ["item_desc"]=> 
     string(6) "Drinks" 
     ["item_qty"]=> 
     string(1) "4" 
     ["item_price"]=> 
     string(4) "5.00" 
     ["total_amount"]=> 
     string(5) "20.00" 
     ["cash_on_delivery"]=> 
     string(1) "Y" 
     ["is_check"]=> 
     string(1) "Y" 
     ["bank_transfer"]=> 
     string(1) "N" 
     ["transaction_date"]=> 
     string(19) "2013-08-15 15:44:30" 
     ["posupid"]=> 
     string(1) "1" 
     ["spid"]=> 
     string(1) "2" 
     ["spname"]=> 
     string(12) "MILO COMPANY" 
     ["spaddress"]=> 
     string(6) "Manila" 
     ["contact_person"]=> 
     string(4) "None" 
     ["tin"]=> 
     string(12) "1232-456-789" 
     ["contact_number"]=> 
     string(7) "0912151" 
     ["poaccid"]=> 
     string(1) "1" 
     ["payee_name"]=> 
     string(6) "Larren" 
     ["bank_details"]=> 
     string(11) "BDO Account" 
     ["account_name"]=> 
     string(7) "Premium" 
     ["account_number"]=> 
     string(5) "54564" 
     ["prepared"]=> 
     string(5) "Admin" 
     ["checked"]=> 
     string(5) "Admin" 
     ["approved"]=> 
     string(5) "Admin" 
    } 
    } 

我的問題是我不能讓JSON的價值。 比方說,例如我想要poid的價值,但我不知道如何。我嘗試了一些數組,但不會工作

這裏是我的代碼:

$items = json_decode($itemlist,true); 
echo $items['poid']; 
+0

可以打印你的json字符串在這裏? – 2013-08-16 06:40:50

+0

好吧,等我使用codeigniter – rochellecanale

+0

好吧,我更新了我的代碼 – rochellecanale

回答

1

怎麼樣?

echo $items['data'][0]['poid'] 

編輯:循環項目

$data = $items['data'];  
foreach($data as $item){ 
    echo 'poid: '.$item['poid']; 
} 
+0

好的,我會試試看,謝謝 – rochellecanale

+0

不,它不工作 – rochellecanale

+0

應該是$ items ['data'] [0] ['poid'] –

0

JSON字符串解碼時,它將被轉換爲JavaScript對象,你可以用點符號或像一本字典橫向其屬性。

因此,舉例來說,如果你的JSON字符串是一樣的東西:

var myJSONString = "{'data':['a', 'b', 'c'] }"; 
var obj = JSON.parse(myJSONString); 

您可以使用

var a = obj.data[0]; 

或以兩種辦法獲得了 'A', 'B' 或 'C' 的價值

var a = obj['data'][0]; 

如果obj.data不是字符串,但其他對象的數組,你就按照上面的記號來檢索嵌套v alues。

例如

var myJSONString = "{'data':['a':[2,4,6], 'b':[1,3,5], 'c':[1,2,3,5,8]] }"; 
var obj = JSON.parse(myJSONString); 

var firstOfA = obj['data']['a'][0]; 

var firstOfA= obj.data.a[0]; 
+0

對不起,但我必須downvote,因爲這個問題是不相關的JavaScript,我已經刪除了由OP –

+0

錯誤添加的標籤我不介意,我看到它是編輯後,不相關,但必須說,原始問題僅用Javascript,JQuery和Json標記。 :) –

1

使用此代碼:

$arr = json_decode($itemlist,true); 
echo $arr['data'][0]['poid']; 
1

以前的答案只會讓你的第一個元素的值,我假設你通過所有的要素要循環,來自你的查詢結果。

首先,你可以簡化你的模型功能:通過您的視圖中的數據

public function getAllPurchaseOrder(){ 
     $sqlSelectAll = "select * from po_order 
         inner join po_supplier on po_order.poid = po_supplier.poid 
         inner join po_account_details on po_supplier.poid = po_account_details.poid"; 
     $resultSelectAll = $this->db->query($sqlSelectAll); 
     return json_encode($resultSelectAll->result_array()); 
} 

我們循環中,您應通過陣列中的所有元素熟悉foreach循環。

$items = json_decode($itemlist,true); //passing true decodes into associative array 

foreach($items as $item){ 
    echo 'poid: '.$item['poid']; 
} 

傳遞true到json_decode()返回轉換陣列中的所有對象,如果你想用你只需要使用->來訪問對象屬性的對象,前工作: $item->poid