$json = '[{"id":"1","name":"Вася"}, {"id":"2","name":"Коля"}, {"id":"3","name":"Федя"}, {"id":"4","name":"Саня"}, {"id":"5","name":"Рома"}]';
$arr = json_decode($json);
foreach($arr as $key => $value){
if( $value -> id == 3) {
unset($arr[$key]);
}
}
$json2 = json_encode($arr, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES );
var_dump($json2);
string(133) "{"0":{"id":"1","name":"Вася"},"1":{"id":"2","name":"Коля"},"3":{"id":"4","name":"Саня"},"4":{"id":"5","name":"Рома"}}"
[{"id":"1","name":"Вася"},{"id":"2","name":"Коля"},{"id":"4","name":"Саня"},{"id":"5","name":"Рома"}]"
При кодировании массива в случае, если его индексы не являются последовательными числами от нуля, то все индексы кодируются в строковые ключи для каждой пары индекс-значение.
$arr = array_values($arr);
$json = '[{"id":"1","name":"Вася"}, {"id":"2","name":"Коля"}, {"id":"3","name":"Федя"}, {"id":"4","name":"Саня"}, {"id":"5","name":"Рома"}]';
$arr = json_decode($json);
foreach($arr as $key => $value){
if( $value -> id == 3) {
unset($arr[$key]);
}
}
$arr = array_values($arr); // <--
$json2 = json_encode($arr, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES );
var_dump($json2);