2014-10-11 4 views
0

json 배열 형태로 배열 내용을 데이터베이스에 저장했습니다.Json 배열에서 요소 제거

형식 : "1", "2", "3"]를

는 이제 데이터베이스에서 검색된 값과 동일한 구성 요소로부터 제 "2"를 제거하기 위해 노력했다.

이에 대한 나의 코드는 내가 형식의 수 $ numbers_final 예상 이제

$numbers= json_decode($numbers_db,true); //json decode numbers array got from DB 
if (($key = array_search(2, $numbers)) !== false) { 
        unset($numbers[$key]); 
       } 
       $numbers_final = json_encode($numbers); 

입니다 : ["1","3"]

그러나 문제는 {"0":"1","2":"3"}

답변

2

에 결과 그 때 unset() 요소 , 인덱스는 그대로 유지됩니다. 이 경우 색인 1이 더 이상 존재하지 않으므로 배열이 객체로 변환됩니다.

요 이런 식으로 뭔가를 할 수 순차적으로 재 인덱싱 할 배열을 강제로 :

$numbers_db = '["1", "2", "3"]'; 

echo $numbers_db; 

$numbers= json_decode($numbers_db,true); //json decode numbers ar 

if (($key = array_search(2, $numbers)) !== false) { 
    unset($numbers[$key]); 
    $numbers = array_values($numbers); 
} 
$numbers_final = json_encode($numbers); 

echo $numbers_final;     
+0

아 ... 좋아, 좋아! :) –