Home  >  Article  >  Backend Development  >  程序逻辑有有关问题,请帮忙

程序逻辑有有关问题,请帮忙

WBOY
WBOYOriginal
2016-06-13 13:04:59652browse

程序逻辑有问题,请大虾帮忙


$arr = array(
0 => array('id'=>12,'name'=>'NO.1'),
1 => array('id'=>13,'name'=>'NO.2'),
);

$_check_id = 0;
if($arr) {
foreach($arr as $v){
?>


}
}?>


程序初始状态为上。
注意$_check_id是三种状态,第一种是为0,即$_check_id=0,第二种是有值,但与数组中的id不相等,即$_check_id=2,第三种状态是:$_check_id与数组中的id相等

现在要求在循环的时候$_check_id 与 数组中id对比
如果相等,将input中的radio选中,即状态为checked
如果不相等,则将循环出来的第一个radio选为checked

当然,也可以拿出循环体来实现,只要能将上面的问题解决就好,想了两三个小时了,麻烦大家给个思路吧

当然,数组也有可能为空,这个就不用判断了,很好解决,现在麻烦的是怎么将上面的问题解决,想了半天,没有头绪,头大了。
------最佳解决方案--------------------


$arr = array(
0 => array('id'=>12,'name'=>'NO.1'),
1 => array('id'=>13,'name'=>'NO.2'),
2 => array('id'=>14,'name'=>'NO.3'),
3 => array('id'=>15,'name'=>'NO.4'),
);

$_check_id = 14;
$found = false;
$htmls = array();
if($arr) {
foreach($arr as $v){
$input_pre = << EOT;
$input_post = << />{$v['name']}
EOT;
if(!$found && $_check_id == $v['id']) {
$found = true;
$input_pre .= ' checked ';
}
$htmls[] = array($input_pre, $input_post);
}
}
$htmlstr = '';
foreach($htmls as $html) {
if(!$found) {
$html[0] .= ' checked ';
$found = true;
}
$htmlstr .= implode('', $html);
}
echo $htmlstr;

可直接执行。
------其他解决方案--------------------

$arr = array(
0 => array('id'=>12,'name'=>'NO.1'),
1 => array('id'=>13,'name'=>'NO.2'),
2 => array('id'=>14,'name'=>'NO.3'),
);

$_check_id = 0;
if($arr) {
foreach($arr as &$v) {
if($_check_id == $v['id']) {
$v['check'] = ' checked';
$_check_id = -1;
}
}
if($_check_id >=0) $arr[0]['check'] = ' checked';
foreach($arr as $v){
?>
/>
}
}?>

------其他解决方案--------------------

foreach($arr as $key=>$v){
if($key == $_check_id){
//这儿是checked
continue;
}
......

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn