0

我一直在搜索和搜索,找不到任何有效的方法,但这就是我想要做的。

这段代码:

try{
$timeout = 2;
$scraper = new udptscraper($timeout);
$ret = $scraper->scrape('udp://tracker.openbittorrent.com:80',array('0D7EA7F06E07F56780D733F18F46DDBB826DCB65'));
print_r($ret);
}catch(ScraperException $e){
echo('Error: ' . $e->getMessage() . "<br />\n");
echo('Connection error: ' . ($e->isConnectionError() ? 'yes' : 'no') . "<br />\n");
}

输出这个:

Array ( [0D7EA7F06E07F56780D733F18F46DDBB826DCB65] => Array ( [seeders] => 148 [completed] => 10 [leechers] => 20 [infohash] => 0D7EA7F06E07F56780D733F18F46DDBB826DCB65 ) ) 

我希望播种机计入一个字符串,例如 $seeds。我该怎么做呢?

4

3 回答 3

2

像这样的东西?

$seeds = $ret['0D7EA7F06E07F56780D733F18F46DDBB826DCB65']['seeders'];
于 2012-12-30T22:35:04.533 回答
0

您可以用户strval()将数字转换为字符串。

$string = strval($number);

或者您可以将其转换为字符串:

$string = (string)$number;

在您的上下文中,这将是:

$string = strval($ret['0D7EA7F06E07F56780D733F18F46DDBB826DCB65']['seeders']);

然而,这个奇怪的字符串也是数组的第一个索引,所以你也可以这样做:

$string = strval($ret[0]['seeders']);

或者如果您只想使用索引(“播种机”也是第二个数组的第一个索引):

$string = strval($ret[0][0]);

如果您只想要数字,那么它也很容易:

$num = $ret[0][0];

于 2012-12-30T22:35:24.297 回答
0

目前尚不清楚您是否希望将数组值分配为单独的变量或只是将其转换为字符串。这是完成所有上述选项的好方法,通过将每个数组键分配为具有匹配数组值的单独变量:

$ret_vars = array_pop($ret);
foreach ($ret_vars as $variable_name=>$variable_value) :
    ${$variable_name} = (string)$variable_value;
endforeach;

在您的原始示例中,这将最终填充$seeders,$completed$leechers与其$infohash匹配的字符串值。当然,请确保在代码的其他地方不使用/不需要这些变量名称。如果是这种情况,只需在构造中添加某种唯一前缀${},例如${'ret_'.$variable_name}

于 2012-12-30T22:49:28.057 回答