2017-09-27 83 views
0

據我瞭解Input::post();不帶參數返回從一個特定的POST包含所有數據的數組..你怎麼通過Input :: post()數據?

我這樣做$all_input = Input::post();

但後來我通過陣列像Java(迭代是,如何即使你做了嗎?)

for ($i=0; $i<count($all_input); $i++) 
    { 
     if (strpos($all_input[$i], 'something') == true) // ERROR... 

但錯誤Undefined offset: 0應用程序崩潰,我認爲意味着該指數沒有被發現?

我自己也嘗試加入這一無濟於事:

if (!isset($all_input)) 
    { 
     return; 
    } 

如果是這樣,你怎麼能訪問它們通過迭代的數據?我知道它包含數據,因爲當我在瀏覽器上進行調試期間按下按鈕時,如果刪除該代碼,我可以看到它們。

如果您尚未弄明白我是從Java開發人員快到了,我剛開始學習PHP的所以請與我承擔......

+1

您的'$ all_input'可能是一個關聯數組,您試圖在if語句中訪問它的索引0,這可能不存在。 'var_dump($ all_input)' - 檢查你有哪些數據 – ArtOsi

回答

1

根據該:https://fuelphp.com/docs/classes/input.html#/method_postInput::post();將返回$_POST其是ASSOC陣列。 以下是源代碼,因爲fuelphp的文檔沒有完全覆蓋它。

/** 
* Fetch an item from the POST array 
* 
* @param string $index The index key 
* @param mixed $default The default value 
* @return string|array 
*/ 
public static function post($index = null, $default = null) 
{ 
    return (func_num_args() === 0) ? $_POST : \Arr::get($_POST, $index, $default); 
} 

你需要與你的輸入名稱來指代,所以如果你有,你所說的「名」的輸入,在這種情況下,你需要參考$all_input['name']。您可以使用array_keys()函數獲取您的密鑰。如果在這種情況下使用foreach也會更好。像:

foreach($all_input as $key => $value) { 
    echo 'Input key: ' . $key . ' value: ' . $value; 
} 

如果你離開了$key =>將只得到了價值,你可以離開它,如果你不使用它在foreach內。

如果你不想使用的foreach somewhy:

$all_input = Input::post(); 
$keys = array_keys($all_input); 
for ($i = 0; $i < count($keys); $i++) { 
    if (strpos($all_input[$keys[$i]], 'something') == true) { 
     // Do your stuff here. 
    } 
} 

但是,如果可能的話我還是推薦的foreach,它的開銷更少,更乾淨的代碼。

+0

這是我第一次聽說關聯數組。有趣。如果我知道要傳入的參數,比如'Input :: post('key')',但是$ _POST返回許多變量,它們將全部存儲到array ['key'] [0] = $ value'等內容中嗎? –

+0

爲什麼在世界上引用CodeIgniter文檔如果OP用FuelPHP標記問題?語法與FuelPHP完全相同,是的 - 其背後的原則也是如此 - 但這對OP這樣的初學者來說會令人困惑。 – patricksweeney

+0

@patricksweeney是的...這是真的,所以我包括了加油站和源代碼,因爲它沒有說明這個文檔... – golddragon007

0

這不會起作用,因爲你正在處理的對象(輸入)不是數組。

我推薦使用一個foreach循環for a循環。要驗證輸入對象的內容/結構,您也可以使用dd()來查看輸入對象的完整內容。

基本上,

$input = Input::post(); 

foreach($input as $i) { 

    echo $i; //this is a property of the Input Object. if you have arrays or other objects store inside of it, you may need to go deeper into the oject either with a foreach loop again or by calling the property directly ($i->property) 

};