如何拆分和分配数据?

时间:2016-08-18 10:44:08

标签: php arrays

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

2 个答案:

答案 0 :(得分: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.

答案 1 :(得分:0)

您实际上是在处理JSON编码数据。因此,您可能需要先将JSON数据转换为标准PHP对象。然后,您可以使用普通的PHP对象访问表示法简单地访问您的首选值。下面评论的代码试图说明(但含糊地)理念。

GIVEN 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;               
        }