Мне нужен PHP-код, который удаляет что-то из файла JSON с помощью PHP, например:
скажем, у меня есть этот файл JSON:
{
"aaa": [
{
"title": "xx",
"description": "6",
},
{
"title": "tt",
"description": "b",
}
]
}
Поэтому я хочу, чтобы он получил строку через POST, а затем удалил всю часть JSON, которая имеет строку, указанную через POST.
Например, предположим, что я отправляю «xx» через запрос POST, после запуска сценария PHP я хочу, чтобы JSON выглядел так, без того, который был удален:
{
"aaa": [
{
"title": "tt",
"description": "b",
}
]
}
Я пробовал все, что нашел, искал в Интернете, но не мог сделать ничего, что делало бы это правильно. Заранее спасибо!
Я ЗНАЮ, ЧТО ЕСТЬ МНОГО ВОПРОСОВ И ОТВЕТОВ, ПОДОБНЫХ ЭТОМ, НО НИ ОДИН ИЗ НИХ НЕ ПОЛЕЗИЛ ДЛЯ МЕНЯ, ПОЭТОМУ Я ПРОСИМ СЕБЯ, НЕ ТРЕБУЕТСЯ Пометить ЭТО как ДУБЛИКАТ, ЕСЛИ ВЫ ЗНАЕТЕ, КАК ЭТО СДЕЛАТЬ, ОТВЕТИТЕ ЕЙ , ЕЩЕ...
На самом деле вы просто хотите отфильтровать массив по свойству title каждого объекта. Это должно помочь, а если нет, объясните, как ~ Как отфильтровать массив объекта?






Что ты хочешь сделать, так это ...
file_get_contents() и json_decode()aaa по заголовку, удалив записи, соответствующие вашим данным POST, с помощью array_filter()json_encode() и file_put_contents().Вот пример
$file = 'path/to/file.json';
$data = json_decode(file_get_contents($file));
$title = trim($_POST['title']); // assuming this is all checked / validated / etc
$data->aaa = array_values(array_filter($data->aaa, function($item) use ($title) {
return (bool) strcmp($item->title, $title); // returns 0 if strings match
}));
file_put_contents($file, json_encode($data));
Демо ~ https://3v4l.org/60MoG
@ luclzzBR2252 Я только что добавил array_values, чтобы повторно проиндексировать отфильтрованный массив. В противном случае вы получите объект с цифровыми клавишами
Это то, что я хотел сделать, но не знал, как объяснить
Я понимаю, что у вас есть принятый ответ, но с таким простым объектом json вы можете просто создать новый объект и добавить массив aaa с элементами, которые не соответствуют тому, который вы хотите удалить.
<?php
$file = '/path/to/your/file';
// Delete this one
$_POST['delete'] = 'xx';
// Get file contents and decode it
$str = file_get_contents( $file );
$json = json_decode( $str );
// Create a new object
$temp = new stdClass;
// Add only the objects we want to keep
foreach( $json->aaa as $obj )
if ( $obj->title != $_POST['delete'] )
$temp->aaa[] = $obj;
// Replace the file contents
file_put_contents(
$file,
json_encode( $temp )
);
Не могли бы вы дать ссылку на эти другие вопросы / ответы и объяснить, почему они не помогли? Это сэкономит время в будущем. Также покажите, что вы пробовали