2017-08-11 6 views
0

Je veux fusionner un fichier json et les afficher après avoir utilisé une fonction foreach.Fusionner 2 fichier JSON en PHP

$urls = array('url_1','url_2', 'url_3', 'url_4', 'url_5'); 
$jobs = []; 
foreach ($urls as $url){ 
$json = json_decode(get_content($url), true); 
$jobs[] = $json; 
} 
$retour = json_encode($jobs); 
foreach($retour as $job) { 
echo $job; 
} 

Mais rien n'apparaît sur mon écran. Et je n'ai pas d'erreur aussi.

Quand je fais echo $retour; j'ai quelque chose comme [[{...},{...},{...},{...},{...},{...}]] au lieu de [{...},{...},{...},{...},{...},{...}].

Comment résoudre ce problème?

+0

Est array $ url contient des variables (url1, url2, ...) comme json? – GYaN

+0

'$ retour' est une chaîne json, vous appelez' foreach' sur une chaîne –

+0

que fait la fonction get_content? Peut-être que vous vouliez utiliser 'file_get_contents'? –

Répondre

0

J'ai essayé ce qui suit et il semble fonctionner comme vous voulez

<?php 
$urls = array('url_1','url_2'); 
$jobs = []; 
foreach ($urls as $url){ 
    $json = json_decode(file_get_contents($url), true); 
    array_push($jobs, $json); 
} 

$unique = array(); 
foreach ($jobs as $piece) { 
    $unique = array_merge($unique, $piece); 
} 
$retour = json_encode($unique); 
print_r($retour); //it gives merged json :: {"key1":"value1","key2":"value2","key3":"value3","key4":"value4"} 
$test[] = $retour; 
print_r($test); //to get it as array :: ([0] => {"key1":"value1","key2":"value2","key3":"value3","key4":"value4"}) 
?> 

J'ai créé URL_1 et URL_2 comme fichier JSON comme suit

{ 
    "key1": "value1", 
    "key2": "value2" 
} 

et

{ 
    "key3": "value3", 
    "key4": "value4" 
}