gpt4 book ai didi

php - 如何在 PHP 中循环 JSON 嵌套数组值?数据表

转载 作者:行者123 更新时间:2023-11-29 16:26:41 24 4
gpt4 key购买 nike

我在 mysql 中的数据库有一个名为“sales”的表,其中有一个“products”字段,其中有几种产品以 json 形式“出售”,在这个 json 中,我只需要获取信息“brand”和“model”即可在数据表中显示它,谢谢。

这是我的 table 的图片。

enter image description here

Here is the json [{"id":"312","marca":"NIKON","modelo":"D3400","serie":"8857882","cantidad":"1","stock":"0","precio":"1669","total":"1669"},{"id":"161","marca":"NIKON","modelo":"AF-P NIKKOR 18-55MM 1:3.5-5.6G","serie":"21963658","cantidad":"1","stock":"0","precio":"0","total":"0"}]

public function mostrarTablaSell(){
$item = null;
$valor = null;
$orden = "id";

$ventas = ControladorVentas::ctrMostrarVentas($item, $valor, $orden);

if(count($ventas) == 0){
echo '{"data": []}';
return;
}

$datosJson = '{
"data": [';
for($i = 0; $i < count($ventas); $i++){
/*=============================================
PRODUCTOS
=============================================*/
$here = json_decode($ventas[$i]["productos"], true);

foreach ($here as $key => $value) {
$productos1 = $value['marca'];
$productos2 = $value['modelo'];
}

//$productos0 = $here[0]['categoria'];
//$productos1 = $here[0]['marca'];
//$productos2 = $here[0]['modelo'];
$productos = $productos1 .' '. $productos2;

/*=============================================
TRAEMOS LAS ACCIONES
=============================================*/
if(isset($_GET["perfilOculto"]) && $_GET["perfilOculto"] == "Especial"){
$botones = "<div class='btn-group'><button class='btn btn-warning btnEditarVenta' idVenta='".$ventas[$i]["id"]."'><i class='fa fa-pencil'></i></button><button class='btn btn-danger btnEliminarVenta' idVenta='".$ventas[$i]["id"]." '><i class='fa fa-times'></i></button><button class='btn btn-info btnImprimirFactura' codigoVenta='".$ventas[$i]["codigo"]."'><i class='fa fa-print'></i></button></div>";
}else{
$botones = "<div class='btn-group'><button class='btn btn-warning btnEditarVenta' idVenta='".$ventas[$i]["id"]."'><i class='fa fa-pencil'></i></button><button class='btn btn-danger btnEliminarVenta' idVenta='".$ventas[$i]["id"]." '><i class='fa fa-times'></i></button><button class='btn btn-info btnImprimirFactura' codigoVenta='".$ventas[$i]["codigo"]."'><i class='fa fa-print'></i></button></div>";
}

$datosJson .='[
"'.($i+1).'",
"'.$ventas[$i]["id"].'",
"'.$ventas[$i]["codigo"].'",
"'.$vendedor.'",
"'.$cliente.'",
"'.$ventas[$i]["proviene"].'",
"'.$productos.'",
"'.$ventas[$i]["desp"].'",
"'.$ventas[$i]["adelanto"].'",
"'.$ventas[$i]["total"].'",
"'.$ventas[$i]["estado"].'",
"'.$ventas[$i]["obs"].'",
"'.$ventas[$i]["fecha"].'",
"'.$botones.'"
],';
}
$datosJson = substr($datosJson, 0, -1);
$datosJson .= ']
}';
echo $datosJson;
}
}

最佳答案

我想我理解你的目标。这是一个片段...

代码:(Demo)

$ventas[0]["productos"] = '[{"id":"312","marca":"NIKON","modelo":"D3400","serie":"8857882","cantidad":"1","stock":"0","precio":"1669","total":"1669"},{"id":"161","marca":"NIKON","modelo":"AF-P NIKKOR 18-55MM 1:3.5-5.6G","serie":"21963658","cantidad":"1","stock":"0","precio":"0","total":"0"}]';
// do not write the above sample data in your code.

$data = [];

foreach ($ventas as $row) {
foreach (json_decode($row["productos"], true) as $details) {
$data[] = [$details['marca'], $details['modelo']];
}
}

echo json_encode(['data' => $data]);

输出:

{"data":[["NIKON","D3400"],["NIKON","AF-P NIKKOR 18-55MM 1:3.5-5.6G"]]}

使用 foreach 代替 for 可以省去 count 的需要,并提供更简单的语法。

使用 json_encode() 作为最后一步使代码更加稳定且易于阅读。

你真的、真的应该规范你的表结构,以允许更容易/更好的查询。存储为 json 需要更多处理,并且会破坏巧妙/直接查询的机会。

关于php - 如何在 PHP 中循环 JSON 嵌套数组值?数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54203221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com