2014-01-25 4 views
3

Итак, у меня есть документ JSON, который я храню в CouchDB. Вот важная часть его:Отменить индекс в массиве превращает его в объект

"games": { 
    "creator": [ 
     "cf86d68b24c1bbf22702356572027642", 
     "cf86d68b24c1bbf22702356572027dd8", 
     "cf86d68b24c1bbf22702356572028b77" 
    ], 
    "solver": { 
    } 
} 

Я пытаюсь удалить один элемент из массива, скажем, индекс 1:

error_log("pre unset: " . json_encode($user->games)); 
unset($user->games->creator[1]); 
error_log("post unset: " . json_encode($user->games)); 

Проблема заключается в том, что поддерживает преобразование моего массива в объект , например:

pre unset: {"creator":["cf86d68b24c1bbf22702356572027642","cf86d68b24c1bbf22702356572027dd8","cf86d68b24c1bbf22702356572028b77"],"solver":{}} 
post unset: {"creator":{"0":"cf86d68b24c1bbf22702356572027642","2":"cf86d68b24c1bbf22702356572028b77"},"solver":{}} 

Что происходит, и как его исправить?

ответ

6

Я исправил это так:

unset($user->games->creator[1]); 
$user->games->creator = array_values($user->games->creator); 
2

Вместо использования unset используйте array_splice. Это автоматически отрегулирует индексы массива:

array_splice($user->games->creator, 1, 1); 

 Смежные вопросы

  • Нет связанных вопросов^_^