Как значение str_replace в json? - PullRequest
0 голосов
/ 29 марта 2020

Может кто-нибудь помочь мне со значением str_replace в файле json, пожалуйста? Мой код хорошо работает с заменой строки, но он не работает со значением в json.

Хорошо работает для правильной замены «старого» на «новый» во всех json файлах:

foreach(glob('*.json') as $path_to_file) {
    $file_contents = file_get_contents($path_to_file); 
    $file_contents = str_replace('old','new',$file_contents);
    file_put_contents($path_to_file,$file_contents);
}

Но когда мне нужно заменить "min_order":"" на "min_order":"1", это не работает. Я не могу заменить "" на "1" напрямую, потому что у меня в json много других значений.

Я тестировал этот код, но он не работал:

foreach(glob('*.json') as $path_to_file) {
    $file_contents = file_get_contents($path_to_file);
    $file_contents = str_replace('"min_order":""','"min_order":"1"',$file_contents);
    file_put_contents($path_to_file,$file_contents);
}

Может кто-нибудь помочь мне с этим вопросом, пожалуйста?

Заранее спасибо. Иржи

1 Ответ

3 голосов
/ 29 марта 2020

Как только вы сделаете $file_contents = file_get_contents($path_to_file);

, вы должны затем использовать json_decode($file_contents); для преобразования строки json в массив или объект,

, а затем манипулировать массивом / объектом, заменяя ТАМ значение ключа, который нужно заменить,

и затем использовать в этом измененном массиве json_encode(); для преобразования массива / объекта обратно в JSON формат

и, наконец, file_put_contents($path_to_file,$file_contents);

Использование str_replace в формате json возможно в JSON, но не рекомендуется и нецелесообразно.

...