为什么我的if语句没有检查foreach中的每个数组?如果某人已经选择了相同类型的值,我想从select2值中禁用它,这里的代码如下:
<div data-dir="dir">
结果是如果$ value = $ statusnya,我的整个select2将被禁用。但是,这不是我想要的。 我只想要与$ statusnya完全相同的值被禁用而另一个可用。 有什么建议吗?
答案 0 :(得分:2)
你正在使用单一的等号(=)不正确你应该使用==进行比较。
替换此行
if($value = $statusnya){
带
if($value == $statusnya){
还在foreach之外定义$ no
实施例: -
$no=0;
foreach($hasil as $value => $label)
{
if($value == $statusnya){
$disable[] = "disabled='disabled'";
}else{
$disable[] = "";
}
echo "<option value='".$value."' $disable[$no]>".$label."</option>";
$no++;
}
答案 1 :(得分:1)
我知道您已经接受了答案,而且这不是codereview.stackexchange.com但我希望您会考虑以下信息。
使用equality operator(即==
)代替assignment operator(即=
)来检查$ value是否等于到$ statusnya。此外,您不需要使用阵列来存储已禁用的属性(除非您需要保留有关以后禁用的每个选项的信息)。
foreach($hasil as $value => $label)
{
$disabled = ''; // empty string -> not disabled
if($value == $statusnya){
$disabled = "disabled='disabled'";
}
echo "<option value='".$value."' $disabled>".$label."</option>";
}
与字符串相比,数组存储在服务器上需要更多内存,因此页面/应用程序增长需要更多资源。请查看this phpfiddle并查看How big are arrays?。
答案 2 :(得分:0)
$disable = arrary();
foreach($hasil as $value => $label)
{
$no=0;
if($value = $statusnya){
$disable[$no] = "disabled='disabled'";
}else{
$disable[] = "";
}
echo "<option value='".$value."' $disable[$no]>".$label."</option>";
$no++;
}
答案 3 :(得分:0)
$disable = array();
foreach($hasil as $value => $label)
{
$no=0;
if($value == $statusnya){
$disable[$no] = "disabled='disabled'";
}else{
$disable[] = "";
}
echo "<option value='".$value."' $disable[$no]>".$label."</option>";
$no++;
}