Skip to content
Advertisement

PHP – json_encode

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.

User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement