从多维数组中提取值

时间:2016-08-16 15:17:03

标签: php arrays json

我有这个字符串:

O:37:"Ivory\GoogleMap\Service\Base\Distance":2:{s:43:"Ivory\GoogleMap\Service\Base\Distancetext";s:6:"572 km";s:44:"Ivory\GoogleMap\Service\Base\Distancevalue";i:572343;}

只需返回572343值。

1 个答案:

答案 0 :(得分:0)

这不是一个数组,而是一个已经序列化的Google对象。它希望您在Distance命名空间中有一个名为Ivory\GoogleMap\Service\Base\的对象。

我发现了一个似乎可以处理的github仓库。

如果这不是你想要的,你可以尝试一些有点不雅的东西,比如从字符串的末尾向后读,直到你拥有所有的数字。

str_replace(';}','',$string);
$output = '';
for ($i = -1; is_numeric(substr($string, $i,1)); $i--) {
    $output = substr($string, $i,1).$output;
}
echo $output;

或者您可以尝试explode使用'“; i:'作为令牌并抓住第二个元素。

$pieces = explode('";i:', $string);
$number = str_replace(';}','',$pieces[1]);
echo $number;

或者你可以用正则表达式做一些更稳定的事情(正如你猜测的那样,我不喜欢)。

来自OP评论的

更新:似乎他们实际上正在努力使用一组Google Ivory对象而不是字符串。这是另一个问题。但是,如果那是他们需要解析的字符串,我的回答会有所帮助。