2012-12-30 242 views
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)) 

而且我要的是播种机算成一个字符串,如$种子。我会如何去做这件事?

+1

听起来就像你想要[提取](http://php.net/manual/en/function.extract.php)。 – cmbuckley

回答

2

像这样的东西?

$seeds = $ret['0D7EA7F06E07F56780D733F18F46DDBB826DCB65']['seeders']; 
+0

你先生真棒! – user1938622

0

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

$string = strval($number);

,或者你可以将它转换成字符串:

$string = (string)$number;

在你的情况下,这将是:

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

但是,这种奇怪的字符串也阵列的第一个索引,所以你也可以这样做:

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

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

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

,如果你只是想号码,然后很容易太:

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

0

它,如果你正在寻找指定数组值(S')作为不清晰单独的变量(s?)或者只是将其转换为字符串。下面是完成上述所有选项,通过与匹配数组值的独立变量分配每个阵列关键的一个好方法:

$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}