2011-07-04 61 views
0
{ 
    "http://url.com": { 
     "id": "http://url.com", 
     "shares": 11111 
    } 
} 

我需要訪問「ID」和「股票」和看起來像正常如何訪問對象內的值?

($results->shares) 

不在這裏工作,有什麼建議?謝謝。

編輯與全碼:

<?php 

include __DIR__ . '/config.php'; 

function do_curl($start_index, $stop_index) { 

    // Do query here to get all pages with ids between start index and stop index 

$sql = "SELECT * FROM mmakers WHERE id >= $start_index and id <= $stop_index"; 
$result = mysql_query($sql) or die(mysql_error()); 
    while ($row = mysql_fetch_array($result)) 
    { 
     $fanpages_query[] = 'https://graph.facebook.com/?ids='.$row['domain']; 
    } 
    return $fanpages_query; 

} 


$fanpages = do_curl($_GET['start_index'], $_GET['stop_index']); 
$fanpages_count = count($fanpages); 


$curl_arr = array(); 
$master = curl_multi_init(); 

for($i = 0; $i < $fanpages_count; $i++) 
{ 
    $url = $fanpages[$i]; 
    $curl_arr[$i] = curl_init($url); 
    curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, true); 
    curl_multi_add_handle($master, $curl_arr[$i]); 
} 
do { 
    curl_multi_exec($master,$running); 
} while($running > 0); 


for($i = 0; $i < $fanpages_count; $i++) 
{ 
    $results = json_decode(curl_multi_getcontent($curl_arr[$i])); 

    $sql_mm = "SELECT * FROM mmakers WHERE domain='".($results->id)."'"; 
    $result_mm = mysql_query($sql_mm) or die(mysql_error()); 
    $row_mm = mysql_fetch_array($result_mm); 

    if ($row_mm['type'] == 'auto') { 
    $sql_d = "SELECT domain FROM domains_list WHERE used='no' AND directory='".$row_mm['directory']."' AND type='auto' ORDER BY rand() LIMIT 1"; 
    $result_d = mysql_query($sql_d) or die(mysql_error()); 
    $row_d = mysql_fetch_array($result_d); 
    } else { 
    $sql_d = "SELECT domain FROM domains_list WHERE used='no' AND directory='".$row_mm['directory']."' AND type='jaa' ORDER BY rand() LIMIT 1"; 
    $result_d = mysql_query($sql_d) or die(mysql_error()); 
    $row_d = mysql_fetch_array($result_d); 
    } 

    mysql_query("UPDATE mmakers SET shares = '".($results->shares)."' WHERE id='".$row_mm['id']."'") or die(mysql_error()); 

} 

?> 

回答

3

我建議到JSON解碼的數組:

$results = json_decode($json, true); 

然後假設你不知道網址,你必須循環陣列之上:

foreach($results as $url => $data) { 
    echo $url, ' shares: ', $data['shares']; 
} 

如果你知道的網址,你可以做

$results['http://url.com']['shares']; 
+0

對不起,沒有注意到你說「assu」的部分明你不知道的URL「。無論如何,我包括一個完整的代碼一些基本的例子將不勝感激。 – Ricardo

1

試試這個:

$results->{"http://url.com"}->shares 
1

你忘了一個屬性。

echo $results->{"http://url.com"}->shares; 
0

您也可以做這樣的事情......

$results = json_decode($json, true); 
echo $results[0]["shares"]; 
+0

'$ results [0]'不起作用。 –

+0

@Felix Kling,然後'$ results ['http://url.com'] ['shares']' –

0
$content = '{ 
    "http://url.com": { 
     "id": "http://url.com", 
     "shares": 11111 
    } 
}'; 

$object = json_decode($content); 
$object->{'http://url.com'}->shares; //11111 
0

當解碼JSON,設置$assoc(的json_decode()第二個參數),以true

$jsonData = json_decode($jsonText, true); 
$url = 'http://url.com'; 
var_dump($jsonData[$url]['id']); 
var_dump($jsonData[$url]['shares']);