2017-02-22 30 views
0

我試圖檢查我的JSON文件的數據。它適用於json文件中的字符串,但是如何用數組中的數組處理它?檢查POST數據 - JSON數組

什麼我送:

{ 
    "info" : "test", 
    "data" : [ 
     { 
      "startdate": "2018-01-01T10:00:00+0100", 
      "enddate": "2018-01-01T17:00:00+0100" 
     } 
    ] 
} 

什麼從來就尚未:

$dataReq = array(
    'info' => $request->get('info'), 
    'date' => $request->get('date'), // my array 
); 

foreach ($dataReq as $a => $value) { 
    if(empty($value)) { 
     return new View('The field \''.$a.'\' is required!');  
    } 
} 

但對於陣列功能empty doenst工作至今。它將返回false,導致數組在那裏。我如何檢查「startdate」鍵?

順便說一句:使用i'm symfony3(FOSRestBundle),PHP 7.0

+0

這是'#'實際上在發送的數據還是不是? – RiggsFolly

+0

對不起。不,它不是。我編輯過它。 –

+0

你檢查了[Symfony驗證](https://symfony.com/doc/current/validation.html)組件嗎?我強烈建議使用它,而不是試圖重新發明輪子。 – LBA

回答

0

可以檢查該值是一個數組,並從中過濾空值,則測試是否它是空的。

$dataReq = array(
    'info' => $request->get('info'), 
    'data' => $request->get('data'), // my array 
); 

foreach ($dataReq as $a => $value) { 
    if(is_array($value)) $value = array_filter($value); 
    if(empty($value)) { 
     return new View('The field \''.$a.'\' is required!');  
    } 
} 

array_filter()函數的默認行爲是如果沒有回調傳遞從陣列等於所有值掃除null0''false

注:我假設你想檢索data而不是date

As commentedLBA,我也建議檢查Symfony Validation component來處理。

+0

是的。目前爲止,我使用Symfony驗證,感謝您的幫助。 –