2017-08-01 15 views
0

私は多少の素人PHPプログラマーですが、意図したとおりに動作しないif文のヘルプを探しています。PHP - if文の設定時に変数がNULLを返します

<?php 

var_dump($_GET['name']); 
var_dump($_GET['id']); 
var_dump($search); 
var_dump($param); 
var_dump($raw); 
var_dump($json); 

// for debugging 
error_reporting(E_ALL); 
ini_set('display_errors', 'on'); 

// choose between either the name or id parameter 
if(isset($_GET['name'])) { 
    $search = $_GET['name']; 
} 
elseif(isset($_GET['id'])) { 
    $search = $_GET['id']; 
} 

// build parameters for either name OR id 
if (isset($_GET['name'])) { 
    $param = http_build_query(array(
     'name' => $_GET['name'], 
     'getMembers' => 'yes', 
     'rand' => rand(), 
    )); 
} 
elseif (isset($_GET['id'])) { 
    $param = http_build_query(array(
     'id' => $_GET['id'], 
     'getMembers' => 'yes', 
     'rand' => rand(), 
    )); 
} 

// get raw json from server 
$raw = file_get_contents("https://example.com/file.php?".$param); 

// decode the raw json response 
$json = json_decode($raw); 

... ?> 

デバッグの目的で、3行目にvarsをどのようにダンプしたかを確認してください。 $search,$param,$rawおよび$jsonは、毎回NULLを返します。私はif文と何か関係があると思っていますが、私の人生のために何が分かるかわかりません。ヘルプは非常に高く評価されます。乾杯!

編集:

大丈夫です!我々はどこかに行っている!私は遠くページの下var_dump($json);を移動し、その結果として、このゴチャゴチャを得た:

object(stdClass)#2 (2) { ["guild"]=> object(stdClass)#1 (11) { ["guild_id"]=> string(3) "182" ["guild_name"]=> string(7) "Jiggmin" ["creation_date"]=> string(19) "2013-05-07 10:32:02" ["active_date"]=> string(19) "2013-05-07 10:32:02" ["member_count"]=> string(1) "1" ["emblem"]=> string(18) "default-emblem.jpg" ["gp_total"]=> string(1) "0" ["gp_today"]=> string(1) "0" ["owner_id"]=> string(7) "1939717" ["note"]=> string(13) "Hehe, trolls." ["active_count"]=> string(1) "0" } ["members"]=> array(1) { [0]=> object(stdClass)#3 (6) { ["user_id"]=> string(7) "1939717" ["name"]=> string(11) "snuppaper97" ["power"]=> string(1) "1" ["rank"]=> string(2) "23" ["gp_today"]=> NULL ["gp_total"]=> NULL } } } 

私はその後、ライン58上echo $json;を実行しようとしましたし、この怪物を得た:

**Recoverable fatal error:** Object of class std class could not be converted to string in /Path/To/File.php on line 58

+0

GETの出力は何ですか? var_dump it –

+0

'var_dump($ search);を入れます。 var_dump($ param); var_dump($ raw); var_dump($ json); 'すべてを実行してチェックした後の最後の行です。 –

+0

どこに定義されましたか? –

答えて

0

彼らは上部にありこれらの変数は定義されていません!

var_dump($search); 
var_dump($param); 
var_dump($raw); 
var_dump($json); 

あなたが何かに設定するまで、それらは常にnullになるでしょう!ヴァルスはどこから来たと思われますか? var_dumpsを下に移動すると、おそらく物事が見え始めるでしょう:-)

EDIT:これでstdClassのオブジェクトが作成されました。 jsonでエンコードするには、配列に変換する必要があります。まず

$array = (array) $object; 
$json = json_encode($array); 
+0

ありがとうございました!進行中です!私の編集内容を見てください。 – bls1999

+0

私の更新された答えを見てください! – delboy1978uk

0
  • グローバルを使用していない、彼らはPHPでコーディングの非常に古いと悪い方法です:それは同じくらい簡単です。
  • の代わりにisset($_GET['name'])を使用してください。array_key_exists('name', $_GET)としてisset($_GET['name'])がNULLに設定されている場合はnullを返します。明示的にを追加すると、コードが何をしているかが分かります。

を構築し、それらのどれもが今までに設定されていない場合、例えば、新たなパラメータ文字列は存在しません、あなたのパラメータにはデフォルトがないように思えるあなたは、サンプルのURLとコードを提供してくれることができますあなたはURLを作成する?または使用する場所$param

+0

私は他の人の助言を受けて、var_dump($ json);父をPHPスクリプトの下に移動させ、PHPが処理できないものを手に入れました。もし私が助けてくれれば、私の編集とlmkを見てください。ありがとう! – bls1999

関連する問題