PHP:数组索引中的$ variable不会返回结果

时间:2015-01-04 15:35:00

标签: php

我有这段代码:

<?php
$names = json_decode(file_get_contents("http://country.io/names.json"), true);
$data = file_get_contents("http://ipinfo.io/myIp/country");
echo($names[$data]);
?>

$names是一系列国家/地区代码,$data是来自IP的国家/地区代码,在我的情况下:IE。我想输出完整的国家/地区名称但由于某种原因它不起作用。但是,如果我键入:echo($names['IE']);,它可以正常工作。怎么了?

2 个答案:

答案 0 :(得分:3)

我认为$data包含一个空字符。 trim将删除字符串两侧的所有空字符,此代码有效:

<?php
$names = json_decode(file_get_contents("http://country.io/names.json"), true);
$data = trim(file_get_contents("http://ipinfo.io/MyIP/country"));
echo($names[$data]);
?>

同样使用JSON作为@ElefantPhace建议更好

<?php
$names = json_decode(file_get_contents("http://country.io/names.json"), true);
$data = json_decode(file_get_contents("http://ipinfo.io/MyIP/json"));
echo($names[$data->country]);
?>

答案 1 :(得分:1)

试试这种方式,对我来说很好:

$names = json_decode(file_get_contents("http://country.io/names.json"), true);
$data = json_decode(file_get_contents("http://ipinfo.io"));
echo($names[$data->country]);

另外,您可能需要参考http://ipinfo.io/developers并了解为什么您可能无法获得预期