我有一个JSON文件,其中包含世界各地的大学列表。我想只获得特定的大学,其中数组中的字段与我需要选择的字段匹配。我面临的问题是每个大学都有自己的ID号,这使我无法弄清楚如何迭代阵列。可以在此GitHub repo。
上找到JSON文件使我将JSON文件转换为数组的代码:
<?php
$json = file_get_contents('universities_list.json');
$universityArray = json_decode($json, true);
print_r($universityArray);
?>
我得到的样本是:
[2942] => Array
(
[alpha_two_code] => EG
[country] => Egypt
[domain] => aast.edu
[name] => Arab Academy for Science & Technology
[web_page] => http://www.aast.edu/
)
[2943] => Array
(
[alpha_two_code] => EG
[country] => Egypt
[domain] => akhbaracademy.edu.eg
[name] => Akhbar El Yom Academy
[web_page] => http://www.akhbaracademy.edu.eg/
)
仅打印alpha_two_code == 'EG'
或== 'Egypt'
的大学的最佳或适当方式是什么?
我阅读了foreach loop上的文档和示例。但仍然无法得到我上面提到的逻辑。
答案 0 :(得分:2)
选中此选项仅返回特定国家/地区
<?php
$json = file_get_contents('university.json');
$universityArray = json_decode($json, true);
universities= array()
for($i=0; $i< count($universityArray); $i++)
{
if($universityArray[$i]["country"] == "Morocco")
universitises[] = $universityArray[$i];
}
var_dump($universitises);
&GT;
答案 1 :(得分:2)
您可以使用alpha_two_code
作为索引。
$indexed = [];
foreach($universityArray as $university){
$index = $university['alpha_two_code'];
if(!isset($indexed[$index])){
$indexed[$index] = [];
}
$indexed[$index][] = $university;
}
现在,您可以通过alpha_two_code
分隔大学,您可以直接访问这些大学。
print_r($indexed['EG']);
现在,根据最佳和适当的部分,您可能希望缓存$indexed
。您可以为大学创建一个目录,并在那里保存JSON编码$indexed
。
答案 2 :(得分:1)
您可以在此处使用array_filter
http://php.net/manual/en/function.array-filter.php函数进行回调。然后,您可以使用array_column
http://php.net/manual/en/function.array-column.phpto抓住名称&#39;列。
$json = file_get_contents('https://github.com/Hipo/university-domains-list/blob/master/world_universities_and_domains.json');
$universityArray = json_decode($json, true);
$filterBy = 'EG';
$newArray = array_filter($universityArray, function ($var) use ($filterBy) {
return ($var['alpha_two_code'] == $filterBy);
});
print_r($newArray);
$names = array_column($newArray, 'name');
print_r($names);
答案 3 :(得分:1)
您需要阅读手册。
试试这个:
$names = array();
foreach($universityArray as $u) {
if($u['alpha_two_code'] == 'EG' || $u['country'] == 'Egypt'){
$names[] = $u['name'];
}
}
print_r($names);