这是我的阵列,
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
]
**/
答案 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
}