2015-05-23 3 views
2

Я начинаю с DataTables (https://datatables.net/)Создать массив для данных JSON

И я пытаюсь перезагрузить мой стол с источником 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" 
     ] 
    ] 
} 

Как я могу это исправить?

ответ

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); 
+0

достаточно '$ jsonencoded = json_encode (массив ('данные' => массив ($ а)), 128);' – splash58

+0

@ splash58: Тогда у вас есть ключи в массиве. Я не знаю, что работает с DataTables. – Richard

+0

@ Richard Reiber - это результат: {"data": [[{"folio": "99001091347" ... Whatch there https://eval.in/369125 – splash58

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

Если вам нужно сохранить ассоциативный массив для записи его на свой .json-файл и повторить данные DataTables, то вы можете принести array values из вашего массива данных и создать новый для вывода 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; 
+0

Спасибо! Томми :) Мой джон прекрасно работает! –

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); 
Смежные вопросы