PHP:有时处理空数组的好方法吗?

Xav*_*vio 2 html php arrays

我正在从我的数据库返回一个数组,如0,0,1,0,在这种情况下会选择产品.我正在检查是否应该将元素标记为已选中.

$p获取产品组的数组.然后对于一系列元素,我使用这样的东西.

<input <?= $p[0]=='1'?'checked':'';?> value="Product 1" />
<input <?= $p[1]=='1'?'checked':'';?> value="Product 2" />
<input <?= $p[2]=='1'?'checked':'';?> value="Product 3" />
<input <?= $p[3]=='1'?'checked':'';?> value="Product 4" />
Run Code Online (Sandbox Code Playgroud)

但有时候根本没有做出任何选择,这将返回一个空数组,这反过来会触发像php这样的php错误 Uninitialized string offset: 3

在保持标记相当整洁的同时处理空数组的好方法是什么?单独的功能还是这样?


UPDATE

更新后的解决方案,其中包含4个无线电,其前三个检查结果.

<?php $p=check(1); ?>

<input type="radio" <?= !empty($p[0])?'checked':'';?>>
<input type="radio" <?= !empty($p[1])?'checked':'';?>>
<input type="radio" <?= !empty($p[2])?'checked':'';?>>
<input type="radio" <?= !empty($p[3])?'checked':'';?>>
Run Code Online (Sandbox Code Playgroud)

>并且sql查询结果可能甚至不是一个空数组.我猜如果查询没有产生任何结果,甚至不会将空数组设置为结果?

Jas*_*ary 8

用途empty():

<input <?= !empty($p[0]) ? 'checked' : ''; ?> value="Product 1" />
Run Code Online (Sandbox Code Playgroud)

来自文档:

如果变量不存在,则不会生成警告.这意味着empty()基本上是!isset($ var)||的简洁等价物 $ var == false.

由于0假值,这适用于您的情况.

  • 如果在这种情况下`<?= empty($ foo),那么反转内联的逻辑会更清晰一点吗?'':'checked'` - 即避免双重否定逻辑(如果它不是非空的回声"检查").+1 (6认同)