2014-02-07 39 views
-1

我試圖通過cURL POST請求接收數組,並且我有一個引渡問題。迭代後在php post請求中神奇空陣列

長話短說:這是一個API控制我們在,當我json_encode的響應...

echo json_encode($_POST['keys']); return; 

結果(在API通信發話端):

array(361) { 
    [0]=> 
    string(26) "some+urlencoded+string" 
    [1]=> 
    string(14) "and+some+other" 
    ... 
} 

等等。所以API接收我的參數數組沒有問題。

然後在API我嘗試foreach循環urldecode每個字符串,有一些其他的數組的值:

$myArray = array(); 

foreach ($_POST['keys'] as $key => $value) 
{ 
    $myArray[$key] = urldecode($value); 
    // Or $myArray[] = urldecode($value); -- same result 
} 

echo json_encode($myArray); return; 

這是結果:

NULL 

我是什麼做錯了?

感謝提前:)

===================================== =============================================

編輯:問題似乎是,在api控制器(住在yii應用程序中)urledecode不起作用。 utf8_decode和base64_decode都沒有。無論如何,至少它們不在foreach循環中工作。他們爲什麼不工作?打敗我。我仍然卡住。

============================================== ====================================

編輯2:我取得了一些進展問題的隔離,在這裏問了另一個問題。對不起,不妨關閉。

PHP (CI) cURL passed multidimensional array does not behave as one (Can't loop it)

回答

1

我不認爲你的問題是在這裏你...你確定你的$ _ POST [「鑰匙」]當你的foreach它是確定?你應該嘗試在你的循環中回顯一些東西,或者在之前print_r($ _ POST ['keys'])。

我嘗試這樣做:

$_POST['keys'] = Array('some+urlencoded+string','and+some+other') ; 
$myArray = array(); 

foreach ($_POST['keys'] as $key => $value) 
    $myArray[$key] = urldecode($value); 

echo '<pre>' ; 
var_dump($_POST['keys']) ; 
echo json_encode($_POST['keys']); 
echo "\n" ; 
echo json_encode($myArray); 
echo '</pre>' ; 

至極渲染這個,看起來相當正確的:

array(2) { 
    [0]=> 
    string(22) "some+urlencoded+string" 
    [1]=> 
    string(14) "and+some+other" 
} 
["some+urlencoded+string","and+some+other"] 

["some urlencoded string","and some other"] 

製作的print_r對$ _ POST [ '鑰匙']和$ myArray的,我覺得你的循環是隻是不工作。

+0

首先,感謝您花時間回覆。我提醒你,這是一個API,我從另一個應用程序調用,並且我只能var_dump $ data = callApi(array('keys'=> $ keys));在原來的應用程序(調用api()的那個。這就是爲什麼我只能有一個回聲json_encode(),這就是我回頭看看 – tasugo

+0

嗯,我不能告訴你更多...你確定你的foreach循環一個真正的數組var?你仍然可以var_dump你嘗試foreach的變量嗎?即使有問題,只要你真的進入你的foreach循環,就不應該有「null」。在json_encode之後你試着print_r sizeof your $ myArray? –

+0

我編輯了我的問答 – tasugo