2017-08-01 54 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); 

... ?> 

請注意,爲了調試目的,我已經在第三行放棄了變量。 $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); 

他們總是會爲空,直到你將它們設置爲某物! Vars應該從哪裏來?移動下面的var_dumps,你可能會開始看到的東西:-)

編輯:現在你有一個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,或者明確地加上null !== $_GET['name'],那麼它返回false,這樣你就知道代碼是在做什麼。

似乎有沒有默認的參數,例如,如果他們都不曾設定,將不會有新的參數字符串建立

你能爲我們提供一個樣本網址和代碼,其中你建立的網址?或者你使用的地方$param

+0

所以我接受了其他人的建議,將'var_dump($ json);'父親放在php腳本中,並得到了php無法處理的東西。如果你能提供幫助,請參閱我的編輯和lmk。謝謝! – bls1999