2016-06-27 5 views
1

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

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']'? – mauris

+0

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

+0

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

ответ

3

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

How to Remove Array Element and Then Re-Index Array?

+0

Я лично проверил ваш код, и, переиндексируя его, отлично работает – Faisal

+0

Спасибо faisal, он работал как шарм –

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