ホームページ >バックエンド開発 >PHPチュートリアル >プログラムのロジックに問題があります。助けてください。

プログラムのロジックに問題があります。助けてください。

WBOY
WBOYオリジナル
2016-06-13 13:04:59759ブラウズ

プログラムのロジックに問題があります。助けてください

<?php<br />
$arr = array(<br />
	0 => array('id'=>12,'name'=>'NO.1'),<br />
	1 => array('id'=>13,'name'=>'NO.2'),<br />
);<br />
<br />
$_check_id = 0;<br />
if($arr) {<br />
foreach($arr as $v){<br />
?><br />
<input type="radio" name="c" id="d_<?php echo $v['id']?>" value="<?php echo $v[id]?>" /><?php echo $v['name']?><br><br />
<?php <br />
}<br />
}?>


プログラムの初期状態は起動しています。
$_check_id には 3 つの状態があることに注意してください。1 つ目は 0、つまり $_check_id=0 です。2 つ目は、値はありますが、配列内の ID と等しくない、つまり $_check_id=2 です。 3 番目の状態は次のとおりです: $ _check_id は配列内の ID と等しい

ここで、ループ中に $_check_id と配列内の ID を比較する必要があります
それらが等しい場合、入力で無線を選択します。つまり、ステータスがチェックされています
等しくない場合は、ループアウトされた最初の無線をチェックとして選択します

もちろん、ループを使用して実装することもできます。上記の問題が解決できれば問題ありません。アイデアを教えてください。

もちろん、配列が空である可能性もあります。これを判断する必要はありません。問題は、上記の問題を解決する方法です。しかし、私には手がかりがありません。頭がクラクラしています。
------最善の解決策------------------
<br />
<br />
	$arr = array(<br />
    0 => array('id'=>12,'name'=>'NO.1'),<br />
    1 => array('id'=>13,'name'=>'NO.2'),<br />
    2 => array('id'=>14,'name'=>'NO.3'),<br />
    3 => array('id'=>15,'name'=>'NO.4'),<br />
	);<br />
	<br />
	$_check_id = 14;<br />
	$found = false;<br />
	$htmls = array();<br />
	if($arr) {<br />
		foreach($arr as $v){<br />
			$input_pre = <<<EOT<br />
				<input type="radio" name="c" id="d_{$v['id']}" value="{$v['id']}"<br />
EOT;<br />
			$input_post = <<<EOT<br />
				/>{$v['name']}<br />
EOT;<br />
			if(!$found && $_check_id == $v['id']) {<br />
				$found = true;<br />
				$input_pre .= ' checked ';<br />
			}<br />
			$htmls[] = array($input_pre, $input_post);<br />
		}<br />
	}<br />
	$htmlstr = '';<br />
	foreach($htmls as $html) {<br />
		if(!$found) {<br />
			$html[0] .= ' checked ';<br />
			$found = true;<br />
		}<br />
		$htmlstr .= implode('', $html);<br />
	}<br />
	echo $htmlstr;<br />

直接実行できます。
------その他の解決策---------
<?php<br />
$arr = array(<br />
    0 => array('id'=>12,'name'=>'NO.1'),<br />
    1 => array('id'=>13,'name'=>'NO.2'),<br />
    2 => array('id'=>14,'name'=>'NO.3'),<br />
);<br />
 <br />
$_check_id = 0;<br />
if($arr) {<br />
  foreach($arr as &$v) {<br />
    if($_check_id == $v['id']) {<br />
      $v['check'] = ' checked';<br />
      $_check_id = -1;<br />
    }<br />
  }<br />
  if($_check_id >=0) $arr[0]['check'] = ' checked';<br />
  foreach($arr as $v){<br />
?><br />
<input type="radio" name="c" id="d_<?php echo $v['id']?>" value="<?php echo $v['id']?>" <?php ;echo isset($v['check'])?$v['check']:''?> /><?php echo $v['name']?><br />
<?php <br />
}<br />
}?>

- -----その他の解決策---------------------
<br />
foreach($arr as $key=>$v){<br />
	if($key == $_check_id){<br />
	//这儿是checked<br />
	continue;<br />
	}<br />
......<br />

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。