2017-08-28 31 views
0

我嘗試編寫一個連接到多個服務器的api並獲取一個子文件 對於每個服務,我編寫了一個額外的函數,用於提取數據並將其轉換爲json格式。PHP |爲什麼array_push()增加一個「by each value?

也我有一個陣列的功能的結果將投入

myFunc1返回生產: {"KEY1":"foo","KEY2":"bar"}

myFunc2返回製備: {"VAL1":"foo","VAL2":"bar"}

比添加的內容:

$jsondata = array("Func1"=>array(),"Func2"=>array()); 
$jsondata["Func1"][] = myFunc1(); 
$jsondata["Func2"][] = myFunc2(); 

如果我現在做一個json_encode($jsondata);我將獲得:

{"Func1":["{\"KEY1\":\"foo\",\"KEY2\":\"bar\"}"],"Func2":["{\"VAL1\":\"foo\",\"VAL2\":\"bar\"}"] 

那幾乎是罰款,但在{"Func1":["{\"KEY":[{\"K之間是多少。

PHP自動添加這個,但如此我的兒子在無效,我不知道如何解決這個問題。

任何想法?

+4

貌似'myFunc1'和'myFunc2'正在返回'json_encode'」 d字符串,當你應該返回數組。除非您希望發生這種情況,否則您應該只使用「json_encode」最終產品。 –

+2

*「PHP自動添加此」* - PHP不會自動添加任何內容。 – axiac

回答

1

這是因爲您將myFunc1()作爲JSON編碼字符串插入到數組中。嘗試返回myFunc1()myFunc2()中的數組,然後將json_encode()作爲一個整體返回。

如果你正在從另一個地方JSON編碼字符串,然後返回它的功能,然後json_decode(),(與true作爲參數,把它作爲一個數組,而不是一個對象)是這樣的:

$jsondata = array("Func1"=>array(),"Func2"=>array()); 
$jsondata["Func1"][] = json_decode(myFunc1(), true); 
$jsondata["Func2"][] = json_decode(myFunc2(), true); 
+0

嗨:),這是重點...我必須首先json_decode,如果jsondata數組被填充,只是一個json_encode($ jsondata) - 非常感謝! –

+0

很高興我能幫到你。如果您的問題得到解決,請通過接受最能幫助您的答案來結束您的問題。 – ishegg

0

你本功能應該返回數組不字符串(如JSON)

如:

$jsondata["Func1"][] = ['KEY1'=>'foo','KEY2' => 'bar']; 
$jsondata["Func2"][] = ['VAL1'=>'foo','VAL2' => 'bar']; 

json_encode($jsondata); 
相關問題