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

私は「ID」と「共有」をアクセスする必要があると、通常のオブジェクト内の値にアクセスする方法は?

($results->shares) 

のように思えるが、ここで何か提案が動作しませんか?ありがとう。完全なコードと

EDIT:

<?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); 

は、その後、あなたは、配列をループに持って、あなたはURLを知らないと仮定すると:

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

場合あなたはURLを知っていますか?

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

申し訳ありませんでしたあなたが "assuあなたはURLを知りません "。とにかく私は完全なコードをいくつかの基本的な例が含まれています評価が含まれます。 – Ricardo

1

この方法を試してください。

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

あなたはプロパティを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をデコードすると0あなたはまた、このような何かを行うことができます...、true$assocjson_decode()の第2引数)を設定します。

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