Angularjs如何处理来自php(json)的二维数组

Posted

技术标签:

【中文标题】Angularjs如何处理来自php(json)的二维数组【英文标题】:Angularjs how to handle a 2 dimensional array from php (json) 【发布时间】:2021-07-23 15:04:36 【问题描述】:

我正在使用 php、angularjs 等创建一个网站。 有一个视图/状态 (ui-router) 触发服务以查询 Active Directory 以获取特定国家/地区的人员信息。 到目前为止,这有效。我从 php 文件中收到信息。

接收到的信息是来自 php 的 json 编码的二维数组,如下所示:

"Sweden":["Larsson","Svensson"],"Poland":["surname1","surname2"],"Italy":["surname3","surname4"],"Malta":["surname5"]

控制器看起来像:

$scope.fetch = function()
        var members = countryService.read();
        members.then(function(response)
            $scope.members = response.data;
            console.log('read succesful');
        );
    
    $scope.fetch();

所以所有信息都在 ($scope.)members 中可用

现在的问题是,我如何遍历这些信息,它看起来像:

Country: Sweden
Members: Larsson
         Svensson
Country: Poland
Members: surname1
         surname2

等等……

ps。视图中的 members 有效。我看到上面的json字符串..

谢谢

【问题讨论】:

【参考方案1】:

@charlietfl

是的,但我无法在我的 php 代码中正确获取关联部分... 我无法设置“国家”:“瑞典”,然后添加人员...

稍后,当在 (ui-) 视图中显示信息正常时,我将添加有关人员的更多信息。

无论如何,这里是 php sn-p:

$countrySupport = array();
    $temp = array();
    $count = 0;
        //looping through filtered array for per country information...
    foreach($countryResult as $country)
        
        for($y=0;$y<$entries['count'];$y++)
            if(ISSET($entries[$y]['co'][0]) && $entries[$y]['co'][0] == $country)
                array_push($temp,$entries[$y]['sn'][0]);
               
            
            
        
        $countrySupport[$country]=$temp; 
        unset($temp);
        $temp = array();
        $count++;
        */
        
    

其中 countryResult 是包含在 AD 组中找到的国家/地区的数组。 然后我遍历所有条目并查看该人的国家/地区是否与 countryResult 数组匹配....如果是,则将该人添加到 countrySupport 数组中的该“国家”。

【讨论】:

$entries 是否包含成员? $entries 基本上包含了这个人的所有属性(结果) 这真的不能告诉我太多 $entries 是 AD 查询的结果。所以例如$entries[0]['co'][0] 是查询结果中的第一个“国家”。 $entries[1]['co'][0] 第二个等等。所以我要做的是,我有一个包含国家/地区的数组……我使用 foreach 遍历这个数组。如果国家/地区与 $entries[0]['co'][0] 匹配,我需要添加例如那个国家的姓氏。结果应该是我和某个国家下面的人有一个阵法。我需要在主页上显示这个......【参考方案2】:

如果您更改 php 响应数据结构以使用包含具有一致键名的对象的非关联外部数组,您将有一个更简单的时间:

[
  
    "country": "Sweden",
    "members": [
      
        "id": 1,
        "name": "Larsson"
      
    ]
  
]

例子:

angular.module('app', [])
  .controller('main', ($scope, $q) => 
    fakeFetch().then(response => 
      $scope.members = response.data;
    );

    function fakeFetch() 
      var def = $q.defer();
      def.resolve(data)
      return def.promise
    
  );
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>


<div ng-app="app" ng-controller="main">
  <div ng-repeat="item in members track by $index">
    <div>Country: item.country</div>   
    <ul>
      <li ng-repeat="mem in item.members track by $index">
         mem.name
      </li>
    </ul>
  </div>
</div>


<script>
  const data = [
      "country": "Sweden",
      "members": [
          "id": 1,
          "name": "Larsson"
        ,
        
          "id": 18,
          "name": "Svensson"
        
      ]
    ,
    
      "country": "Malta",
      "members": [
          "id": 7,
          "name": "Foo"
        ,
        
          "id": 33,
          "name": "Bar"
        
      ]
    
  ]
</script>

【讨论】:

我使用了“答案”来显示构建数组的 php 代码。我无法使关联部分正确...由于二维数组我必须填写循环...

以上是关于Angularjs如何处理来自php(json)的二维数组的主要内容,如果未能解决你的问题,请参考以下文章

流分析 - 如何处理参考输入中的 json

如何处理来自 API 调用的 ios 数据

C++:如何处理 NULL 值(例如来自数据库)?

AWS Glue:如何处理具有不同架构的嵌套 JSON

Typescript 和 AngularJS 1.5:如何处理导出类

登录时如何处理状态(Ionic、Firebase、AngularJS)?