2016-07-15 76 views
-2

我想從JSON URL檢索數據到PHP網頁。原來的網址是:JSON到PHP解析不能按預期工作

http://reverseip.logontube.com/?url=104.28.23.18&output=json

的URL返回主機IP和託管在該IP的所有領域。

現在使用JSON在線工具,我嘗試解碼輸出。輸出如下:

stdClass Object ([hostip] => 104.28.23.18 [hostname] => 104.28.23.18 [response] => stdClass Object ([domain_count] => 14 [domains] => Array ([0] => th998877.com [1] => careerplanningbooks.com [2] => humanhangbag.com [3] => azbabycarez.net [4] => travellersrights.com [5] => big-booobs-pics.net [6] => enddepression.us [7] => alumnihighschool.net [8] => rubilax.com [9] => xtcts.com [10] => car-hoken-navi.com [11] => lightpostlocalexperts.com [12] => dublo.net [13] => 123savemp3.info))) 

以上是原始數據。 然後我使用PHP函數在網頁上顯示該數據。這是在PHP腳本用於:

$string = file_get_contents("http://reverseip.logontube.com/?url=104.28.23.18&output=json"); 
$json = json_decode($string, true); 

foreach ($json as $key => $value) { 
if (!is_array($value)) { 
    echo $key . '=>' . $value . '<br />'; 
} else { 
    foreach ($value as $key => $val) { 
     echo $key . '=>' . $val . '<br />'; 
    } 
} 
} 

這是輸出,我從PHP有其顯示在我的網頁:

hostip=>104.28.23.18 

hostname=>104.28.23.18 

domain_count=>14 

domains=>Array 

我的問題是:在過去的線之上,爲什麼域正在返回數組?我在期待像th998877.com careerplanningbooks.com等每個域的名稱。如何使用原始的JSON網址在PHP中顯示這些域?

+1

當'$ val'是陣列 - 這是字符串表示'「陣列」'如果你要打印數組值 - 做一個'foreach'一次。 –

+0

你能告訴我要添加的代碼嗎? – Online

+0

謝謝,Tonza給了我額外的代碼。 – Online

回答

0

你需要作出新的foreach

<?php 
$string = file_get_contents("http://reverseip.logontube.com/?url=104.28.23.18&output=json"); 
$json = json_decode($string, true); 

foreach ($json as $key => $value) { 
    if (!is_array($value)) { 
    echo $key . '=>' . $value . '<br />'; 
    } else { 
     foreach ($value as $key => $val) { 

      //Add this to your code 

      if(is_array($val)){ 
       foreach($val as $array => $i){ 
        echo $i . '<br />'; 
       } 
      } 
      else{ 
       echo $val . '<br />'; 
      } 


     } 
    } 
} 
+0

謝謝你完美的工作! – Online

1

試試這個,你有

foreach ($json as $key => $value) { 
     if (!is_array($value)) { 
      echo $key . '=>' . $value . '<br />'; 
     } 
     else { 
      echo $key . '=>' . print_r($value) . '<br />'; 
     } 
    } 

如果$value是數組用戶print_r()功能來呈現它。

+0

這是給出的輸出爲:response => 1 – Online

0

您有效扁平化陣列輸出,但你也有在stdClass ES混在裏面。這裏有一個簡單的方法這可能是去上班:

array_walk_recursive($json, function($val, $key) { echo "$key=>$val<br/>"; });