爆炸阵列结果并申请

时间:2020-08-29 15:03:28

标签: php arrays regex laravel

这是我的阵列,

array:2 [
  0 => "{"1":[2],"2":[1,3]}"
  1 => true
]

如何以相应的格式显示上述数组

item_id | item_value_id
   1             2
   2             1
   2             3

我尝试使用explode,但不幸的是我无法解析括号。

这是我尝试过的

        // dd(explode("[]", $value));
        // dd(preg_split('/"/', $value));
        // dd(preg_split('/(?![^][]*\])/', $value));

我没有得到预期的结果。

更新:

我将数组包裹在json_decode周围,我得到了

        foreach ($arrays as $key => $value) {
                    # code... 
                    $json = json_decode($value);
   
//Another foreach 
                    foreach ($json as $key => $value1) {
                        # code...
                        dd($value1);
    
                    }
                }

结果

**dd($json)**
 /**
            {#1386
              +"1": array:1 [
                0 => 2
              ]
              +"2": array:2 [
                0 => 1
                1 => 3
              ]
            }
        */

**dd($value)**

   /**
    array:1 [
      0 => 2
    ]
    **/

2 个答案:

答案 0 :(得分:2)

我不确定在这里我是否完全正确,但是我相信这就是您要的:

<?php

$data = [
    0 => '{"1":[2],"2":[1,3]}',
    1 => true
];


$decoded_json = json_decode($data[0], true);


?>

<table>
    <thead>
        <th>item_id</th>
        <th>item_value_id</th>
    </thead>
    <tbody>

   <?php foreach ($decoded_json as $item_key => $item){?>
        <?php foreach ($item as $item_data){ ?>

            <tr>
                <td><?php echo $item_key?></td>
                <td><?php echo $item_data?></td>
            </tr>


        <?php }?>
    <?php } ?>
    </tbody>
</table>

答案 1 :(得分:1)

除非对象实现Countable或ArrayAccess接口,否则无法循环。 假设您的型号名称为Model,则可以如下进行批量插入:

<?php

$rows = [];

$arrays = json_decode($data[0],true);

foreach ($arrays as $key1 => $value) {
    foreach ($value as $key2 => $value2) {
        $rows[] = [
            'item_id' => $key1,
            'item_value_id' => $value2
        ];
    }
}

if(count($rows) > 0){
    Model::insert($rows); // bulk insert
}