Задать вопрос
@Bokovlad

Как обновить массив из json на php?

Приветствую! Подскажите, как правильно обновить массив. Добавляю данные таким образом:
$name = "Василий";
$phone = '+798522141';
$name2 = 'Иван';
$old = 25;


$file = file_get_contents('new.json'); 
$taskList = json_decode($file);

$id_count = count ($taskList)+1;
$id_count_total = "20".$id_count;
                        
unset($file);                               
           
$taskList[] = array(
    
    'id_project'=>$id_count_total,
    'name'=>$name,
    'phone_sto'=>$phone,
    'teem'=>array(
        'names'=>$name2,
        'olg'=>$old
    )
);        
          
             $datas = json_encode($taskList, JSON_PRETTY_PRINT);
file_put_contents('new.json',  $datas);
          
unset($taskList);

Получаю:
[
    {
        "id_project": "201",
        "name": "\u0412\u0430\u0441\u0438\u043b\u0438\u0439",
        "phone_sto": "+798522141",
        "teem": {
            "names": "\u0418\u0432\u0430\u043d",
            "olg": 25
        }
    },
    {
        "id_project": "202",
        "name": "\u0412\u0430\u0441\u0438\u043b\u0438\u0439",
        "phone_sto": "+798522141",
        "teem": {
            "names": "\u0418\u0432\u0430\u043d",
            "olg": 25
        }
    }]

Я хочу в фикле foreach найти объект который содержит определенный id_project и в него добавить новые данные в teem чтобы в итоге получилось:
{
	"id_project": "204",
	"name": "Егор",
	"phone_sto": "+79991234567",
	"teem": [{
			"names": "Коля",
			"olg": 25
		},
		{
			"names": "Вася",
			"olg": 30
		}
	]
}

Т.е. в teem добавлять новых членов команды.

Написал такое решение, но не знаю, что нужно указать в цикле, чтобы значение было записано в конкретный проект project_id.
$file = file_get_contents('new.json');    

$taskList=json_decode($file);              

    foreach ( $taskList as $key){     

         
if ($key->id_project  == '202' ) { 
$newdatas[] = ??????
   }  }

file_put_contents('new.json',json_encode($newdatas, JSON_PRETTY_PRINT)); 

unset($taskList);  // Очистить переменную $taskList

Пытался по-разному, но получается так, что весь файл Json полностью перезаписывается и оставется только то, что я указал в цикле, а другие все данные стираются.
  • Вопрос задан
  • 183 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
$file = file_get_contents('new.json');    

$newData = 

$taskList=json_decode($file);              

foreach ( $taskList as $key){     
       if ($key->id_project  == '202' ) { 
                  $key->team[] = $newData;
       }
}
         


file_put_contents('new.json',json_encode($taskList, JSON_PRETTY_PRINT)); 

unset($taskList);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы