Php 如何访问对象内部的值?

Php 如何访问对象内部的值?,php,json,Php,Json,我需要访问“id”和“共享”,看起来很正常 { "http://url.com": { "id": "http://url.com", "shares": 11111 } } 这里不行,有什么建议吗?谢谢 使用完整代码编辑: ($results->shares) 试试这个: <?php include __DIR__ . '/config.php'; function do_curl($start_index, $stop_index)

我需要访问“id”和“共享”,看起来很正常

{
   "http://url.com": {
      "id": "http://url.com",
      "shares": 11111
   }
}
这里不行,有什么建议吗?谢谢

使用完整代码编辑:

($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());

}

?>
试试这个:

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

}

?>

你忘了一件东西

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

你忘了一件东西

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

我建议将JSON解码为一个数组:

echo $results->{"http://url.com"}->shares;
然后假设您不知道URL,则必须在数组上循环:

$results = json_decode($json, true);
如果你知道网址,你可以这样做

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

我建议将JSON解码为一个数组:

echo $results->{"http://url.com"}->shares;
然后假设您不知道URL,则必须在数组上循环:

$results = json_decode($json, true);
如果你知道网址,你可以这样做

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

你也可以这样做

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

你也可以这样做

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

    • 解码JSON时,将
      $assoc
      (的第二个参数)设置为
      true

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

      解码JSON时,将
      $assoc
      (的第二个参数)设置为
      true

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

      对不起,我没有注意到你说“假设你不知道网址”的那部分。无论如何,我包括了一个完整的代码一些基本的例子将不胜感激。对不起,没有注意到你说“假设你不知道网址”的部分。无论如何,我包括一个完整的代码一些基本的例子将不胜感激。