在PHP中声明变量

时间:2013-07-23 06:34:07

标签: php

我前一段时间写了一个剧本,但是在过去的几天里遇到了一些问题时,我注意到在审查它时我没有正确地填充变量。在PHP中对del变量进行delcare并在子范围内填充它的正确方法是什么?我当前的代码如下所示,但我遇到了$ results var未被填充的问题。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $GLOBALS["api_url"]);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 100);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
$data = curl_exec($ch);
curl_close($ch);

$data = explode(";",$data);
$results = array();

foreach ($data AS $temp)
{
    $temp = explode("=",$temp);
    $results[$temp[0]] = $temp[1];
}

if ($results["result"] == "success")
{
    $log_terminate_success = "Service ID #" . $serviceid . " has been Immediately Terminated Successfully!";
    log_activity($log_terminate_success);

    return true;
}
else
{
    $log_terminate_failure = "Service ID #" . $serviceid . " has failed Immediate Termination: " . $results["message"];
    log_activity($log_terminate_failure);

    return false;
}

5 个答案:

答案 0 :(得分:0)

您不需要在PHP中声明变量。

如果您的$results没有填满:您应该测试是否正确填充了$data。尝试使用print_r($data);查看是否存在您期望的正确数据。

此外,当您foreach() explode()数据后,$temp $data不再是数组。然后再将它再次爆炸到另一个数组中。如果原始{{1}}的行为符合预期,您还应测试此数据是否符合预期。

答案 1 :(得分:0)

$results;

这在PHP中绝对没有任何意义。你认为它会将变量$results创建为空,但事实上它甚至不会这样做。你必须为它分配一个值:

$results = array();

答案 2 :(得分:0)

在您的示例代码中,您需要确保以下两件事:

  1. 您正在以循环形式访问循环内的$results变量,因此您需要确保它是一个数组。

  2. 在循环之后,您正在检查'result'索引 - 所以您可能希望始终定义它。

  3. 你可以把这条线放在你的循环之前:

    $results = array('result' => 'unknown');
    

    这会将变量定义为数组,并将起始result值设置为st {'unknown'。该值可能会在循环内被覆盖,但如果不是,则循环后仍然会有一个有效的比较 - 您将不会引用未定义的数组索引。

答案 3 :(得分:-1)

你可以尝试:

$results = array();

if( !empty($data) AND is_array($data) ) {
    foreach ($data AS $temp) {
        $temp = explode("=",$temp);
        $results[$temp[0]] = $temp[1];
    }
}

答案 4 :(得分:-1)

我认为问题在于:

$data = explode(";",$data);
$results;

它应该是:

$data = explode(";",$data);
$results = array();