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)的二维数组的主要内容,如果未能解决你的问题,请参考以下文章