2013-08-16 87 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