在json foreach中组合2个值

时间:2018-03-17 02:31:23

标签: php

我从json文件中提取信息

  

json raw

{
  "channels": [    
    {
      "position": 2,
      "id": "411322093804978180",
      "name": "Home"
    },
    {
      "position": 0,
      "id": "411324510143381505",
      "name": "Lobby"
    }
  ],


  "members": [

    {
      "username": "John", 
      "channel_id": "411324510143381505",     
      "id": "408129022657036454"
    },    
    {
      "username": "Ted", 
      "id": "320056690290458665"
    }
  ],
  "name": "Home Server"
}

我能够显示要显示的频道名称,但如果用户不在频道中,那么如果您查看json的成员部分,则他们没有频道ID。但是如果它们在一个频道中它将channel_id添加到json的成员部分,id与频道id匹配,所以我试图通过这样做来显示在频道内有channel_id的用户,如果频道id等于用户频道id < / p>

以下但未将用户添加到频道

foreach($result['channels'] as $item){     

   echo '<div class="channel">
           <div class="channel-name">'.$item['name'].'</div>';           

          if ($result['channels']['id'] == $result['members']['channel_id']){
              echo $result['members']['username'];
          } else {
              echo '';
          }




   echo '</div>';

}

1 个答案:

答案 0 :(得分:1)

如果您想继续您的开始方式,您必须为每个频道检查每个用户:

foreach($result['channels'] as $item){     
   echo '<div class="channel">
           <div class="channel-name">'.$item['name'].'</div>';           

          foreach($result['members'] as $member){   
            if(isset($member['channel_id']) && !strcmp($member['channel_id'], $item['id'])) {
                echo $member['username'];
            }
          }

   echo '</div>';
}

这是你想要的吗?

Doc:
http://php.net/manual/fr/function.strcmp.php
http://php.net/manual/fr/function.isset.php