您好我有一个看起来像这样的数组,
Array
(
[0] => 40's
[1] => 50's
[2] => 60's
)
和一些看起来像这样的代码,
<?php if(isset($playable_age) && in_array('40\'s', $playable_age)) { $set = TRUE; } else { $set = FALSE; } ?>
<div class="checkbox"><?php echo $this->formbuilder->checkbox( 'playable_age[]', "40's", "40's", $set ); ?></div>
<?php if(isset($playable_age) && in_array('50\'s', $playable_age)) { $set = TRUE; } else { $set = FALSE; } ?>
<div class="checkbox"><?php echo $this->formbuilder->checkbox( 'playable_age[]', "50's", "50's", $set ); ?></div>
<?php if(isset($playable_age) && in_array('60\'s', $playable_age)) { $set = TRUE; } else { $set = FALSE; } ?>
<div class="checkbox"><?php echo $this->formbuilder->checkbox( 'playable_age[]', "60's", "60's", $set ); ?></div>
现在第一个if语句返回true,但是第二个和第三个if返回false,即使数组中存在50和60的值,为什么会这样?
答案 0 :(得分:4)
看起来数组中的这些值之前有一个空格:
[1] => 50's
[2] => 60's
^
第一个值没有看到的东西:
[0] => 40's
答案 1 :(得分:0)
因为您有语法错误。
你可以这样做:
<?php
$playable_age = array(0=>'40\'s',1=>'50\'s',2=>'60\'s');
if(isset($playable_age) && in_array('40\'s', $playable_age)) { $set = TRUE; echo "1"; } else { $set = FALSE; echo "2"; }
if(isset($playable_age) && in_array('50\'s', $playable_age)) { $set = TRUE; echo "3"; } else { $set = FALSE; echo "4"; }
if(isset($playable_age) && in_array('60\'s', $playable_age)) { $set = TRUE; echo "5"; } else { $set = FALSE; echo "6"; }
if(isset($playable_age) && in_array('70\'s', $playable_age)) { $set = TRUE; echo "7"; } else { $set = FALSE; echo "8"; }
?>
答案 2 :(得分:0)
在对数组执行逻辑检查之前,创建一个用户定义的函数,并使用array_walk调用每个数组值的trim()。