0

しばらく前にスクリプトを書きましたが、ここ数日でいくつかの問題が発生したため、それを見直したときに、変数を適切に設定していないことに気付きました。PHPで変数を宣言し、サブスコープに入力する適切な方法は何ですか? 私の現在のコードは次のようになりますが、 $results 変数が満たされていないという問題がありました。

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

5 に答える 5

0

PHP では変数を宣言する必要はありません。

入力されていない場合:が正しく入力されている$resultsかどうかをテストする必要があります。$dataを使用print_r($data);して、期待する場所に適切なデータがあるかどうかを確認してください。

また、foreach()配列であるデータを取得すると、配列explode()$tempはなくなります。次に、それを別の配列に再び分解します。元のデータが期待どおりに動作する場合に備えて、このデータが期待どおりであるかどうかもテストする必要があります$data

于 2013-07-23T06:37:13.813 に答える
0
$results;

これは驚くべきことに、PHP ではまったく何もしません。変数を空として作成すると思う$resultsかもしれませんが、実際にはそうしません。値を割り当てる必要があります。

$results = array();
于 2013-07-23T06:38:02.770 に答える
0

サンプル コードでは、次の 2 つのことを確認する必要があります。

  1. ループ内の変数に配列としてアクセスしている$resultsため、配列であることを確認する必要があります。

  2. ループの後、'result'インデックスをチェックしているので、おそらくそれを常に定義する必要があります。

これを行うには、ループの前に次の行を配置します。

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

これにより、変数が配列として定義され、開始result値が文字列 ' に設定されunknown'ます。その値はおそらくループ内で上書きされますが、そうでない場合でも、ループ後に有効な比較が行われます。未定義の配列インデックスを参照することはありません。

于 2013-07-23T06:38:09.847 に答える
-1

あなたが試すことができます:

$results = array();

if( !empty($data) AND is_array($data) ) {
    foreach ($data AS $temp) {
        $temp = explode("=",$temp);
        $results[$temp[0]] = $temp[1];
    }
}
于 2013-07-23T06:36:01.153 に答える
-1

問題はここにあると思います:

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

そのはず:

$data = explode(";",$data);
$results = array();
于 2013-07-23T06:36:39.870 に答える