我的输入看起来像这样。
{!! 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 ) )
我正在尝试检查amount
和expiry_date
是否不是null
if ( $input['inventory[0][amount]'] and $input['inventory[0][expiry_date]'] != null )
知道了
未定义索引:库存[0] [金额]
答案 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
){
}