2016-08-18 78 views
0

enter image description here我如何拆分和分配数据?

我该如何分割该图像或在PHP中分配数组。

[{"ID":2,"no":123,"pname":"400","unit":"mt","bid_count":"4568","unit_price":"56","est_unit_price":"21.31","progress_count":"3841","i_project":117,"seq":0}] 

我试图分裂,但它有点奇怪。 我用这个=>

$object = str_replace('[{', '', $object); 
    $object = str_replace('}]', '', $object); 
    $pieces = explode(",", $object); 
    // return $pieces[0]; 

    $datas = array(
     'ID' =>str_replace('"ID":','',$pieces[0]), 
     'poz_no'=>str_replace('"poz_no":','',$pieces[1]), 
     'poz_name'=>"asd", 
     'unit'=>str_replace('"unit":','',$pieces[3]), 
     'bid_count'=>str_replace('"bid_count":','',$pieces[4]), 
     'unit_price'=>str_replace('"unit_price":','',$pieces[5]), 
     'est_unit_price'=> str_replace('"est_unit_price":','',$pieces[6]), 
     'progress_count' =>str_replace('"progress_count":','',$pieces[7]), 
     'i_project'=>str_replace('"i_project":','',$pieces[8]), 
     'seq' =>str_replace('"seq":','',$pieces[9]) 
    ); 

我做到了我自己,但它似乎不可思议:

$object = str_replace('[{', '', $object); 
    $object = str_replace('}]', '', $object); 
    $pieces = explode(",", $object); 


    $datas = array(
     'ID' =>str_replace('"','',str_replace('"ID":','',$pieces[0])), 
     'poz_no'=>str_replace('"','',str_replace('"poz_no":','',$pieces[1])), 
     'poz_name'=>str_replace('"','',str_replace('"poz_name":','',$pieces[2])), 
     'unit'=>str_replace('"','',str_replace('"unit":','',$pieces[3])), 
     'bid_count'=>str_replace('"','',str_replace('"bid_count":','',$pieces[4])), 
     'unit_price'=>str_replace('"','',str_replace('"unit_price":','',$pieces[5])), 
     'est_unit_price'=>str_replace('"','',str_replace('"est_unit_price":','',$pieces[6])), 
     'progress_count' =>str_replace('"','',str_replace('"progress_count":','',$pieces[7])), 
     'i_project'=>str_replace('"','',str_replace('"i_project":','',$pieces[8])), 
     'seq' =>str_replace('"','',str_replace('"seq":','',$pieces[9])) 
    ); 
+0

[json_decode](http://php.net/json_decode)。 –

回答

1

您可以使用json_decode这一点。

如果你有你的字符串:

$json = '[{"ID":2,"poz_no":123,"poz_name":"400mm Muflu Beton ve C Parçası Döşenmesi","unit":"mt","bid_count":"4568","unit_price":"56","est_unit_price":"21.31","progress_count":"3841","i_project":117,"seq":0}]'; 

你可以简单地做:

$datas = json_decode($json, true); 

现在$datas你有从json的所有字段的数组。

正如你可以在json中看到的,你有一个只有一个元素的对象数组。

$datas = $datas[0]; //get first element of array. 
0

你实际上是用JSON编码处理的数据在这里:如果你想只有第一个元素后,你可以做。因此,您可能需要先将JSON数据转换为标准PHP对象。然后,您可以使用普通的PHP对象访问表示法简单地访问您的首选值。下面的注释代码试图说明(但隐约)这个想法。

给定JSON DATA:

<?php 

     $jsonString = '[{ 
         "ID":2, 
         "poz_no":123, 
         "poz_name":"400mm Muflu Beton ve C Parçası Döşenmesi", 
         "unit":"mt", 
         "bid_count":"4568", 
         "unit_price":"56", 
         "est_unit_price":"21.31", 
         "progress_count":"3841", 
         "i_project":117, 
         "seq":0 
        }]'; 

的过程:

<?php 

     // CONVERT THE JSON DATA TO NATIVE PHP OBJECT... 
     $arrJSONData = json_decode($jsonString); 

     // NOW, YOU COULD ACCESS THE PHP OBJECT BY DOING: $arrJSONData[0] 
     $objJson  = $arrJSONData[0]; 

     // IF YOU DID IT LIKE THIS; FROM THIS POINT YOU COULD ACCESS YOUR DATA 
     // LIKE YOU WOULD ACCESS ANY NORMAL PHP OBJECT LIKE SO: 
     $id    = $objJson->ID; 
     $pozNo   = $objJson->poz_no; 
     $unit   = $objJson->unit; 

     // HOWEVER, WHAT IF THE JSON DATA CONTAINS MORE THAN ONE ENTRY? 
     // THEN A LOOP WOULD BE NECESSARY... 

     // LOOP THROUGH THE RESULTING ARRAY OF OBJECTS AND GET YOUR DATA... 
     foreach($arrJSONData as $jsonData){    
      // AGAIN; YOU COULD ACCESS YOUR DATA 
      // LIKE YOU WOULD ACCESS ANY NORMAL PHP OBJECT LIKE SO: 
      $id    = $objJson->ID; 
      $pozNo   = $objJson->poz_no; 
      $unit   = $objJson->unit;    
     }