程式邏輯有問題,請大蝦幫忙
$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;
}
......