unset () не работает должным образом

1

Ниже приведен мой код для удаления объекта внутри массива JSON.

if($_GET['method']=='deleteStudentReflections'){

        $jsonString = file_get_contents('../admin/data/student_reflection.json');

        $data = json_decode($jsonString, true);
        print_r($data["student_reflections"]); 
        unset($data["student_reflections"][$_GET['obj_val']]);

        $newJsonString = json_encode($data);

        file_put_contents('../admin/data/student_reflection.json', $newJsonString);

        print_r($_GET);

}

он должен сделать это: Перед вызовом функции значение массива JSON:

{"english_courses":[{"name":"Abdullah","detail":"Bad Boy","image_link":"images\/dp.jpg"},{"name":"Course Chin 2","detail":"Course det 2","image_link":"images\/explicit feedly 3.PNG"},{"name":"courses 3 chinese","detail":"courses detail chinese 3","image_link":"images\/site turorial.png"}]}

он должен удалять любой объект внутри массива курсов english_courses, но вместо его удаления он делает следующее:

{"english_courses":{"0":{"name":"Abdullah","detail":"Bad Boy","image_link":"images\/dp.jpg"},"2":{"name":"courses 3 chinese","detail":"courses detail chinese 3","image_link":"images\/site turorial.png"}}}

это код obj_val:

function deleteEnglishCourse() { 
           var obj_val=$('#op').val(); 
           console.log(obj_val); 
           var deleteConfirm = confirm("Press 'Ok' to continue, Press 'Cancel' to Cancel "); 
          if (deleteConfirm == true) { 
             $.ajax ({ type: "GET", url: 'delete.php', data: "obj_val="+obj_val+"&method=deleteEnglishCourse", success: function(data) {alert(data); location.reload(); } }); } else { } } 

это как '#op' установлено:

function displayData(data){ 
            var html="<select id='op' class='form-control' onchange='valueSelect(this.value);'>"; for(var i=0;i<data["english_courses"].length;i++){ html+='<option value="'+i+'">' + data["english_courses"][i]["name"] + '</option>'; } 
   html+='</select>'; 
   $('#name_dropdown').append(html); } 

в основном выпадающее место заполняется динамическими данными. и когда выбрано значение, он попадает в файл php, где конкретный объект json-массива удаляется на основе значения obj_val

эта ошибка возникает только тогда, когда obj_val является "0", а функция php должна удалить первый индекс массива. В противном случае он отлично работает

пожалуйста помоги !!

  • 0
    каково значение $_GET['obj_val'] ? и пример, который вы привели из $data['student_reflections'] ?
  • 0
    в основном выпадающий список заполняется динамическими данными. и когда значение выбрано, оно попадает в php-файл, где конкретный объект массива json удаляется на основе значения obj_val
Показать ещё 4 комментария
Теги:

1 ответ

3
Лучший ответ

вам нужно перевести $ data array, проблема в том, что вы пытаетесь отменить ($ data....), поэтому первый индекс начинается с "1", он должен начинаться с "0", тогда он будет работать нормально

Как удалить элемент массива, а затем повторно индексировать массив?

  • 0
    Я лично проверил ваш код, и, переиндексируя, он отлично работает
  • 0
    Спасибо faisal, это работает как шарм

Ещё вопросы

Сообщество Overcoder
Наверх
Меню