2017-01-17 2 views
0

에서 값 삭제 : PHP - 나는 다음과 같은 데이터가 포함 된 JSON 파일을 가지고 JSON 개체

{ 
    "0": { 
     "name": "Test1", 
     "devices": [ 
      { 
       "name": "Test1", 
       "code": "654345", 
       "state": "on" 
      }, 
      { 
       "name": "Test2", 
       "code": "876543", 
       "state": "off" 
      }, 
      { 
       "name": "Test3", 
       "code": "44444", 
       "state": "off" 
      } 
     ] 
    }, 
    "1": { 
     "name": "Test2", 
     "devices": [ 
      { 
       "name": "Test4", 
       "code": "987654", 
       "state": "on" 
      } 
     ] 
    } 
} 

지금 나는 장치 중 하나를 설정 해제하고 싶습니다. PHP 코드를 따라 해봤지만 작동하지 않는 이유를 알 수 없습니다.

$file = '../data/data.json'; 
$json_data = file_get_contents($file); 
$json = json_decode($json_data); 

foreach ($json as $key => $value) { 
    foreach ($value->devices as $k => $v) { 
     if ($v->name == $_POST["name"]) { 
      unset($json[$key]); 
     } 
    } 
} 

file_put_contents($file, json_encode($json)); 

미리 도움을 청하십시오!

+0

설정을 취소하려는 키는 무엇입니까? '$ _POST [ 'name']'의 값은 무엇입니까? – Machavity

+0

$ _POST [ 'name']은 (는) 장치의 이름입니다. –

답변

0

당신이해야

unset($json->$key->devices[$k]); 

먼저 foreach는 당신이 여러 개체를 가지고 있기 때문에, 당신은 currnet 객체의 각 장치에 가서 그들이 그 지정된 이름이있는 경우 검색 할 수 있습니다. 그래서 값을 검색하고 키로 삭제하십시오.

관련 문제