php条件不起作用

时间:2013-01-12 06:40:04

标签: php

我有一个奇怪的问题。我的条件不起作用:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://maps.googleapis.com/maps/api/geocode/json?    address='.urlencode($address).'&sensor=true');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec ($ch);
curl_close ($ch);

if($result !== null) {
    $result = @json_decode($result, true);
    $result = @$result['results'][0]['address_components'];

    foreach($result as $key => $value) {
        if($value['types'][0] == 'administrative_area_level_2')
            return $value['long_name'];
    }
} else {
    throw new Exception('unable to look up the county');
}

我试过

if($result)
if($result != null)
if($result != '')
if(!empty($result))
if(isset($result))

两个都没有工作,脚本总是进入块内,但$ result的值为null,我可以通过xdebug看到它。 为什么会这样?

编辑: 这是一个截图 screenshot

这是var_dump显示的内容:

  

string'{“results”:[],“status”:“ZERO_RESULTS”}'   (长度= 52)

这解决了它:

        $result = @json_decode($result, true);

    if(!empty($result['results'])) {

4 个答案:

答案 0 :(得分:1)

尝试添加

var_dump($result);
die;

在curl响应之后,为你知道的那个做那个应该为null并且他们检查结果是什么?它可能永远不会返回null。 请记住,值“”不是NULL值,而是“”值。

答案 1 :(得分:1)

您是否查看过函数is_null()

if(!is_null($result)) { ... }

<强> Documentation

答案 2 :(得分:0)

试试这个......可能是因为空格..你的curl_exec之后echo strlen($result);会帮助你检查结果是否为空。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://maps.googleapis.com/maps/api/geocode/json?         address='.urlencode($address).'&sensor=true');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec ($ch);
curl_close ($ch);

if(trim($result)!='') {
 $result = @json_decode($result, true);
 $result = @$result['results'][0]['address_components'];
 foreach($result as $key => $value) {
    if($value['types'][0] == 'administrative_area_level_2')
        return $value['long_name'];
 }
} else {
throw new Exception('unable to look up the county');
}

答案 3 :(得分:0)

我粘贴你的代码并用地址运行它。 $result不是json而是html,因为url无效(404)。 json_decode返回null,因为无法解码字符串。

至少有两个建议修改:

1 - 在网址中删除...json?address=...之间的空格 2 - 使用json_last_error和/或检查json_decode的返回值,以查看json是否已正确解码。

http://php.net/manual/en/function.json-last-error.php