为Data JSON创建数组


Create array for Data JSON

我从datattables (https://datatables.net/)开始

我正在尝试用json源重新加载我的表。

从PHP代码:我想创建一个json数组:
$fh = fopen("pv1_consultafolioTorre".".json", 'w');
while($row = mssql_fetch_array($query_result))
  {
     $a = array(
       array(
         'folio' => $row['folio'],
         'MATNR' => $row['MATNR'],
         'sucursalSolcitante' => $sucursalSolcitante,
         'sucursalResponsable' => $sucursalResponsable,
         'fechaSolicitud' => $row['fechaSolicitud'],
         'cantidadSolicitada' => $row['cantidadSolicitada'],
         'MATNR' => $row['MATNR'],
         'fechaConfirmacion' => $row['fechaConfirmacion'],
         'cantidadConfirmada' => $row['cantidadConfirmada'],
         'tiempoConfirmacion' => $result,
         'estatus' => 'Pendiente'
       ));
       $jsonencoded = json_encode($a, 128);
       print json_encode($a);
       fwrite($fh, $jsonencoded);
  }
  fclose($fh);

,我得到了这个:

[
    {
        "folio": "99001091347",
        "MATNR": "033999900         ",
        "sucursalSolcitante": " CDG1 MATRIZ",
        "sucursalResponsable": " SC13 TIJUANA CENTRO",
        "fechaSolicitud": "2015-05-23 09:13",
        "cantidadSolicitada": 1,
        "fechaConfirmacion": "2015-05-23 09:14:47",
        "cantidadConfirmada": 1,
        "tiempoConfirmacion": 4,
        "estatus": "Aprobado"
    }
]

但是I数据表需要下一个结构:

{
    "data": [
        [
            "99001091347",
            "033999900         ",
            " CDG1 MATRIZ",
            " SC13 TIJUANA CENTRO",
            "2015-05-23 09:13",
            "1",
            "2015-05-23 09:14:47",
            "1",
            "4",
            "Aprobado"
        ]
    ]
}

我该如何解决这个问题?

如果您需要保留关联数组以便将其写入. JSON文件并回显数据表的数据,那么您可以从数据数组中获取数组值并为JSON输出创建一个新数组:

$json_data = array();
while($row = mssql_fetch_array($query_result))
{
    $data = array(
        'folio' => $row['folio'],
        'MATNR' => $row['MATNR'],
        'sucursalSolcitante' => $sucursalSolcitante,
        'sucursalResponsable' => $sucursalResponsable,
        'fechaSolicitud' => $row['fechaSolicitud'],
        'cantidadSolicitada' => $row['cantidadSolicitada'],
        'MATNR' => $row['MATNR'],
        'fechaConfirmacion' => $row['fechaConfirmacion'],
        'cantidadConfirmada' => $row['cantidadConfirmada'],
        'tiempoConfirmacion' => $result,
        'estatus' => 'Pendiente'
    );
    // write the array to a file if needed
    $json_data[] = array_values($data); // Transforming for DataTables
}
// Build the final DataTables array
$data_tables_array = array(
    'data' => $json_data
);
$jsonencoded = json_encode($data_tables_array);
echo $jsonencoded;

试试这个代码

$output['data'] = [];
$fh = fopen("pv1_consultafolioTorre".".json", 'w');
while($row = mssql_fetch_array($query_result))
{
  $output['data'][] = array(
                    $row['folio'],
                    $row['MATNR'],
                    $sucursalSolcitante,
                    $sucursalResponsable,
                    $row['fechaSolicitud'],
                    $row['cantidadSolicitada'],
                    $row['MATNR'],
                    $row['fechaConfirmacion'],
                    $row['cantidadConfirmada'],
                    $result,
                    'Pendiente'
                );
}

print $jsonencoded = json_encode($output, 128);
fwrite($fh, $jsonencoded);

用这个代替:

$fh = fopen("pv1_consultafolioTorre".".json", 'w');
$arr = Array();
while($row = mssql_fetch_array($query_result))
  {
     array_push($arr, array(
         $row['folio'],
         $row['MATNR'],
         $sucursalSolcitante,
         $sucursalResponsable,
         $row['fechaSolicitud'],
         $row['cantidadSolicitada'],
         $row['MATNR'],
         $row['fechaConfirmacion'],
         $row['cantidadConfirmada'],
         $result,
         'Pendiente'
       ));
  }
  print $jsonencoded = json_encode(Array("data" => $arr), 128);
  fwrite($fh, $jsonencoded);
  fclose($fh);

请尝试下面的代码。我插入了$data = array('data' => $a);也改变了数组中的$row[]。您将得到想要的输出。

$fh = fopen("pv1_consultafolioTorre".".json", 'w');
        while($row = mssql_fetch_array($query_result))
          {
           $a = array(
                   array(
            $row['folio'],
            $row['MATNR'],
            $sucursalSolcitante,
            $sucursalResponsable,
            $row['fechaSolicitud'],
            $row['cantidadSolicitada'],
            $row['MATNR'],
            $row['fechaConfirmacion'],
            $row['cantidadConfirmada'],
            $result,
            'Pendiente'
           )
        );
    $data = array('data' => $a); // added by me.
    $jsonencoded = json_encode($data, 128);
    print json_encode($jsonencoded);
    fwrite($fh, $jsonencoded);
      }
      fclose($fh);