检查输入数组是否为空-Laravel 5.4

时间:2019-05-12 09:23:39

标签: php laravel

我的输入看起来像这样。

{!! Form::text('inventory[0][amount]', null, ['class'=>'form-control']) !!}
{!! Form::text('inventory[0][expiry_date]', null, ['data-format'=>'D, dd MM yyyy', 'class'=>'form-control']) !!}

print_r( $_POST )结果

[inventory] => Array ( [0] => Array ( [amount] => 66 [expiry_date] => 2019/05/20 ) )

我正在尝试检查amountexpiry_date是否不是null

if ( $input['inventory[0][amount]'] and $input['inventory[0][expiry_date]'] != null )

知道了

  

未定义索引:库存[0] [金额]

4 个答案:

答案 0 :(得分:3)

尝试使用!empty()

if (!empty($_POST['inventory'][0]['amount']) && !empty($_POST['inventory'][0]['expiry_date']))
{ 
    //You code goes here
}

答案 1 :(得分:2)

您可以使用点符号和$request->filled($keys)来实现此目的...

$request->filled(['inventory.0.amount', 'inventory.0.expiry_date'])

如果存在数量和到期日期并且不为空,则将返回true

例如,假设您要在控制器中执行检查...

use Illuminate\Http\Request;

// ...

class YourController extends Controller
{
    public function store(Request $request)
    {
        if ($request->filled(['inventory.0.amount', 'inventory.0.expiry_date'])) {
            // Both amount and expiry_date are present and not empty...
            // You can also use the request() helper if you don't want inject the Request class...
        }
    }
}

我还建议除非您有多个库存物品,即inventory[n]['amount']-您将输入名称更改为inventory[amount]

这意味着您可以执行以下操作:

$request->filled('inventory.amount') // or (isset($input['inventory']['amount']) && ! empty($input['inventory']['amount']))

编辑

filled()在5.5中引入,应在5.4中替换为has()

答案 2 :(得分:0)

您没有正确使用阵列键,请使用以下代码替换

$arr = array(
 'inventory' => Array (
  0 => Array (
     'amount' => 66,
     'expiry_date' => '2019/05/20'
  ) 
 )
);

if($arr['inventory'][0]['amount'] and $arr['inventory'][0]['expiry_date'] != ''){

答案 3 :(得分:0)

此数组中没有名称为'inventory[0][amount]'的键,因此将按以下方式进行检查:

if(array_key_exists('inventory',$input) &&  
     array_key_exists(0,$input['inventory'])  &&  
     array_key_exists('amount',$input['inventory'][0])  && 
       !empty($input['inventory'][0]['amount'])
//add for expiry too
 ){

}