我正在从我的数据库返回一个数组,如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查询结果可能甚至不是一个空数组.我猜如果查询没有产生任何结果,甚至不会将空数组设置为结果?
用途empty():
<input <?= !empty($p[0]) ? 'checked' : ''; ?> value="Product 1" />
Run Code Online (Sandbox Code Playgroud)
来自文档:
如果变量不存在,则不会生成警告.这意味着empty()基本上是!isset($ var)||的简洁等价物 $ var == false.
由于0是假值,这适用于您的情况.