【问题标题】:How to unset values from an array in php?如何从php中的数组中取消设置值?
【发布时间】:2014-08-20 19:38:55
【问题描述】:

我有一个像这样的 json 数组

{
"id":"1507593152797237",
"handle":"naveen",
"firstName":"bos",
"lastName":"Hello",
"email":"testnaveen.bos@gmail.com",
"pic":null,
"following":[
"123"
],
"followers":[
],
"groups":[
],
"blocking":[
],
"blockers":[
],
"postUnfollowing":[
],
"followingGroups":[
],
"likes":[
]
},
{
"id":"1234",
"handle":"naveesn.bos",
"firstName":"naveenbos",
"lastName":"boss",
"email":"naveen.boss@gmail.com",
"pic":null,
"following":[
"123"
],
"followers":[
],
"groups":[
11
],
"blocking":[
],
"blockers":[
],
"postUnfollowing":[
],
"followingGroups":[
],
"likes":[
],
}

我想从这个数组中删除不需要的项目,例如 followingGroups[]、blockers[]、blocking[]、

$response =array();

    foreach ($user["followers"] as $follower) {
        $response[] = $this->mongologue->user('find', $follower);
    }
    echo json_encode($response);

我需要从 $response 中取消设置不需要的东西,意思是在 Groups[]、blockers[]、blocking[] 之后删除这些东西,请帮忙。

【问题讨论】:

  • 上面的json对象数组是由json_encode($response)创建的吗?
  • @ShaunakShukla 是的,这个 json 对象是从 json_encode($response) 创建的
  • 那么你可以在json_encode($response);之前使用Suman Biswas的答案但在循环中!或者您可以在添加到 $response[]! 之前在当前的 foreach 循环中保留条件

标签: php arrays json unset


【解决方案1】:

正如我在评论中提到的那样实现......让我知道它是否对你有用!

foreach ($user["followers"] as $follower) {
        $response[] = $this->mongologue->user('find', $follower);
    }

$unnecessary = array('followingGroups','blockers','blocking');
foreach ($response as $key1=>$res){
    foreach($res as $key => $new_res){
        if(in_array($key,$unnecessary))  
            unset($response[$key1][$key]);
    }
}
    echo json_encode($response);

【讨论】:

    【解决方案2】:
    function findAndRemove(array, property, value) {
     $.each(array, function(index, result) {
      if(result[property] == value) {
          //Remove from array
          array.splice(index, 1);
      }    
     });
    }
    

    //检查followingGroups.result 是否有属性为“id”且值为“whatever value”的对象 //然后删除它;p findAndRemove(followingGroups.result, 'id', 'whatever value');

    【讨论】:

      【解决方案3】:

      你可以使用 unset 函数。

      unset($response['blockers']);
      

      使用它从 $response 数组中删除“阻止程序”。

      【讨论】:

        猜你喜欢
        • 2019-02-25
        • 1970-01-01
        • 1970-01-01
        • 2020-05-28
        • 2018-10-27
        • 1970-01-01
        • 2012-04-06
        • 2021-12-02
        • 2016-02-13
        相关资源
        最近更新 更多