我必须拉出一堆json文件,并根据这些文件中的信息创建链接,并以递归方式进入文件。
{
"_v" : "12.2",
"categories" : [ {
"id" : "boys-hats-and-beanies",
"name" : "Hats & Beanies"
}
]
}
因此我需要构建另一个url来获取
的文件内容http://xxx.xxx/?id=boys-hats-and=beanies.json
在该文件中我可能需要再次执行此操作。正如我现在所说的,它将我需要的信息放入许多数组中,我希望它能保持层次结构。
$allLinks['root'] = array();
$allLinks['firstLevel'] = array();
$allLinks['secondLevel'] = array();
$allLinks['thirdLevel'] = array();
function getContent($info){
$content = file_get_contents($info);
return json_decode($content, true);
}
$new = getContent('https://xxx.xxx/?id=root');
foreach ($new['categories'] as $name => $value) {
array_push($allLinks['root'], 'https://xxx.xxx/?id='.$value['id']);
}
foreach ($allLinks['root'] as $name => $value) {
$new = getContent($value);
foreach ($new['categories'] as $name => $value) {
array_push($allLinks['firstLevel'], 'https://xxx.xxx/?id='.$value['id']);
}
}
foreach ($allLinks['firstLevel'] as $name => $value) {
$new = getContent($value);
foreach ($new['categories'] as $name => $value) {
array_push($allLinks['secondLevel'], 'https://xxx.xxx/?id='.$value['id']);
}
}
foreach ($allLinks['secondLevel'] as $name => $value) {
$new = getContent($value);
foreach ($new['categories'] as $name => $value) {
array_push($allLinks['thirdLevel'], 'https://xxx.xxx/?id='.$value['id']);
}
}
print_r($allLinks);
所以你可以看到我想要的东西。请任何帮助都会很棒!
答案 0 :(得分:0)
看起来你试图将url存储在数组中,这应该返回多维数组中的所有url,其中0是第一级。
function getContent($info){
$content = file_get_contents($info);
return json_decode($content, true);
}
function getContentUrlById($id, $ext = '.json')
{
return 'https://xxx.xxx/?id=' . $id . $ext;
}
function getContentRecursive($id = 'root', $level = 0)
{
$result = array();
$url = getContentUrlById($id);
$content = getContent($url);
$result[$level][] = $url;
foreach($content['categories'] as $cat){
$result = array_merge_recursive($result, getContentRecursive($cat['id'], $level + 1));
}
return $result;
}