首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >unset()未按预期工作

unset()未按预期工作
EN

Stack Overflow用户
提问于 2016-06-27 01:24:11
回答 1查看 1.7K关注 0票数 1

下面是我删除JSON数组中的一个对象的代码。

代码语言:javascript
复制
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数组值之前:

代码语言:javascript
复制
{"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”课程数组中的任何对象,但不是删除它,而是执行以下操作:

代码语言:javascript
复制
{"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代码:

代码语言:javascript
复制
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”的设置方式:

代码语言:javascript
复制
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文件,其中根据obj_val的值删除json数组的一个特定obj。

只在obj_val为'0‘和php函数必须删除数组的第一个索引时才会发生此错误。否则,它可以很好地工作

救命啊!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-27 02:42:51

您必须重新索引$data数组,问题是当您尝试unset时($data.)因此,第一个索引从"1“开始,应该从"0”开始,然后就可以正常工作了。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38044732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档