为Data JSON创建数组

时间:2015-05-23 15:05:22

标签: php arrays json

我从DataTables(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"
    }
]

但是我的DataTables需要下一个结构:

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

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:1)

如果您需要保留关联数组以将其写入.json文件并回显DataTables的数据,那么您可以从数据数组中获取array values并为JSON输出创建一个新的https://www.dropbox.com/s/h60llp5zzkrodln/ezmall_2015-05-21-214647_p01a019-ph-4s-DN00AO6A-10.txt?dl=0

$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;

答案 1 :(得分:0)

请改用:

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

答案 2 :(得分:0)

试试这段代码

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

答案 3 :(得分:0)

请尝试以下代码。我插入了$ 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);