I generate json files manually this way:
$output_json = '{ "tabela1": { "ilosc_wpisow": '; $output_json = $output_json.'"'."$ile_wierszy_1".'",'.' "tabela": ['; for ($i = 1; $i <= $ile_wierszy_1; $i++) { $g = $i-1; $szukana_wartosc_array2[$g] = str_replace(" ",'n',$szukana_wartosc_array[$g]); $output_json = $output_json.' { "bajty_przed": '.'"'.$bajty_przed_array[$g].'", '; $output_json = $output_json.'"szukana_wartosc": '.'"'.$szukana_wartosc_array2[$g].'", '; $output_json = $output_json.'"bajty_po": '.'"'.$bajty_po_array[$g].'", '; $output_json = $output_json.'"nowa_wartosc": '.'"'.$nowa_wartosc_array[$g].'" }'; if ($i!=$ile_wierszy_1) { $output_json = $output_json.','; } } $output_json = $output_json.' ] },'; $output_json = $output_json.' "tabela2": { "ilosc_wpisow": '; $output_json = $output_json.'"'."$ile_wierszy_2".'",'.' "tabela": ['; for ($i = 1; $i <= $ile_wierszy_2; $i++) { $g = $i-1; $output_json = $output_json.' { "szukana_wartosc2": '.'"'.$szukana_wartosc2_array[$g].'", '; $output_json = $output_json.'"zamien_na": '.'"'.$zamien_na_array[$g].'", '; $output_json = $output_json.'"przesuniecie": '.'"'.$przesuniecie_array[$g].'" }'; if ($i!=$ile_wierszy_2) { $output_json = $output_json.','; } } $output_json = $output_json.' ] } }';
Someone help me create the function json_encode? I tried in different ways to add variables to the array, but every time I have something different on the output.
Output: https://pastebin.com/f8keXaY7
Advertisement
Answer
First Step : Build your json structure in a php array and store it in a variable.
Something like that.
$json_source = [ 'tabela1' => [ "ilosc_wpisow" => $ile_wierszy_1, "tabela" => array_map(function($key) use ($szukana_wartosc_array, $bajty_przed_array, $bajty_po_array, $nowa_wartosc_array) { return [ "bajty_przed" => $bajty_przed_array[$key], "szukana_wartosc" => str_replace(" ", 'n', $szukana_wartosc_array[$key]), "bajty_po" => $bajty_po_array[$key], "nowa_wartosc" => $nowa_wartosc_array[$key], ]; }, array_keys($szukana_wartosc_array)), ], 'tabela2' => [ 'ilosc_wpisow' => $ile_wierszy_2, 'tabela' => array_map(function($key) use ($szukana_wartosc2_array, $zamien_na_array, $przesuniecie_array) { return [ 'szukana_wartosc2' => $szukana_wartosc2_array[$key], "zamien_na" => $zamien_na_array[$key], "przesuniecie" => $przesuniecie_array[$key], ]; }, array_keys($szukana_wartosc2_array)), ], ];
Second Step : Use json_encode function.
echo json_encode($json_source);
And, If your output is always different, it means that your input is always different.