ホームページ > バックエンド開発 > PHPチュートリアル > switch文を飛び出した後に下方向に実行させる方法

switch文を飛び出した後に下方向に実行させる方法

WBOY
リリース: 2016-06-23 13:25:17
オリジナル
1620 人が閲覧しました

 $type=$_POST['type'];//直接看类型获取对应数据  无需登录switch ($type){case 1:  //sql读数据1 $acase 2:  //sql读数据2 $a}if($a){} //读出数据有就返回 没有就返回错误 die;if($user){}  //验证是否登录//登陆后才能依类型获取的数据switch ($type){case 3:  xxxxxxx $bcase 4:  xxxxxxx $b}if($b){} //读出数据有就返回 没有就返回错误 die;switch ($type){case 5:  xxxxxxx $ccase 6:  xxxxxxx $c}if($c){} //读出数据有就返回 没有就返回“此项为空” 这里不算错
ログイン後にコピー


今、状況があります
case 1 2 if$a xx else 111
case 3 4 if$b xx else 222
case 5 6 if$c xx else 333
type = 4 result 111
4 から。飛び出した後に$aを判定するのが本来の目的です
飛び出した後に対応する条件判定ができればいいのですが
もちろんifを3つネストすれば十分ですが、ということです。は毎回可能です あと1~2個無意味な判定があります
対応する条件判定のみを行う良い方法はありますか

ディスカッションへの返信(解決策)

$type=$_POST['type']; //$type 只会是单值switch ($type) {  case 1:     //生成 sql 指令1  case 2:    //条件生成 sql 指令2    //sql读数据 $a    if($a){} //读出数据有就返回 没有就返回错误 die;    break;  case 3:    xxxxxxx $b  case 4:    xxxxxxx $b    if($b){} //读出数据有就返回 没有就返回错误 die;    break;  case 5:    xxxxxxx $c  case 6:    xxxxxxx $c    if($c){} //读出数据有就返回 没有就返回“此项为空” 这里不算错}
ログイン後にコピー
ログイン後にコピー

$type=$_POST['type']; //$type 只会是单值switch ($type) {  case 1:     //生成 sql 指令1  case 2:    //条件生成 sql 指令2    //sql读数据 $a    if($a){} //读出数据有就返回 没有就返回错误 die;    break;  case 3:    xxxxxxx $b  case 4:    xxxxxxx $b    if($b){} //读出数据有就返回 没有就返回错误 die;    break;  case 5:    xxxxxxx $c  case 6:    xxxxxxx $c    if($c){} //读出数据有就返回 没有就返回“此项为空” 这里不算错}
ログイン後にコピー
ログイン後にコピー

試してみたところ

type=4の場合、$bの判定が行われますが、
本来はデータが読み出されるはずですが、
他のものも試してみましたが、判定結果は常に条件を満たしていません。
1 2 は OK です
、1 2 はログインする必要はありません

in

if ($a){}
break;
if($user) を追加した後
ログインを判断する
その後、ケース 3
ケース 4
if( $b){1}else{2}
結果は常に 2 です

ルールを説明して実際のコードを投稿してください

switch ($type) {  case 1:     $sql = SQL语句     $a =  = mysql_fetch_assoc($sql );  case 2:     $sql = SQL语句     $a =  = mysql_fetch_assoc($sql );    if($a){		$rep['code']    = 1;		$rep['valid'] = $a;                reponse($rep);}else{		$rep['code']  = 1008;		$rep['error'] = 'Error parameters';		reponse($rep);}    break;  case 3:     $sql = SQL语句     $b = mysql_fetch_assoc($sql );  case 4:     $sql = SQL语句     $b = mysql_fetch_assoc($sql );    if($b){		$rep['code']    = 1;		$rep['valid'] = $b;                reponse($rep);}else{		$rep['code']  = 1008;		$rep['error'] = 'Error parameters';		reponse($rep);}    break;  case 5:     $sql = SQL语句     $b = mysql_fetch_assoc($sql );  case 6:     $sql = SQL语句     $b = mysql_fetch_assoc($sql );    if($c){		$rep['code']    = 1;		$rep['valid'] = $c;                reponse($rep);} else{		$rep['code']  = 1008;		$rep['error'] = 'Error parameters';		reponse($rep);}}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

function reponse($rep){	echo json_encode($rep); die;}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー


switch ($type) {  case 1:     $sql = SQL语句     $a =  = mysql_fetch_assoc($sql );  case 2:     $sql = SQL语句     $a =  = mysql_fetch_assoc($sql );    if($a){		$rep['code']    = 1;		$rep['valid'] = $a;                reponse($rep);}else{		$rep['code']  = 1008;		$rep['error'] = 'Error parameters';		reponse($rep);}    break;  case 3:     $sql = SQL语句     $b = mysql_fetch_assoc($sql );  case 4:     $sql = SQL语句     $b = mysql_fetch_assoc($sql );    if($b){		$rep['code']    = 1;		$rep['valid'] = $b;                reponse($rep);}else{		$rep['code']  = 1008;		$rep['error'] = 'Error parameters';		reponse($rep);}    break;  case 5:     $sql = SQL语句     $b = mysql_fetch_assoc($sql );  case 6:     $sql = SQL语句     $b = mysql_fetch_assoc($sql );    if($c){		$rep['code']    = 1;		$rep['valid'] = $c;                reponse($rep);} else{		$rep['code']  = 1008;		$rep['error'] = 'Error parameters';		reponse($rep);}}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

function reponse($rep){	echo json_encode($rep); die;}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー


Are you so $s ql = SQL ステートメント; $b = mysql_fetch_assoc( $sql ); これはクエリ結果を返すことができますか?
必ずfalseが返されます

$b = mysql_fetch_assoc(mysql_query($sql ));
ログイン後にコピー
ログイン後にコピー



では、ルールを説明して実際のコードを投稿してください

ログインが削除されているか、type = 3 4の場合、判定が一貫していないことを確認してください

その後、5 6が読み出される 使用後配列内の while ループは、5 つであっても 6 つであっても、すべて読み出されます。 。

つまり、while ループは case 内でラップされていません。 。 。



タイプ 1、2、3、4... どういう意味ですか?
ケース 3 とケース 4 の SQL 命令は同じですか?


switch ($type) {  case 1:     $sql = SQL语句     $a =  = mysql_fetch_assoc($sql );  case 2:     $sql = SQL语句     $a =  = mysql_fetch_assoc($sql );    if($a){		$rep['code']    = 1;		$rep['valid'] = $a;                reponse($rep);}else{		$rep['code']  = 1008;		$rep['error'] = 'Error parameters';		reponse($rep);}    break;  case 3:     $sql = SQL语句     $b = mysql_fetch_assoc($sql );  case 4:     $sql = SQL语句     $b = mysql_fetch_assoc($sql );    if($b){		$rep['code']    = 1;		$rep['valid'] = $b;                reponse($rep);}else{		$rep['code']  = 1008;		$rep['error'] = 'Error parameters';		reponse($rep);}    break;  case 5:     $sql = SQL语句     $b = mysql_fetch_assoc($sql );  case 6:     $sql = SQL语句     $b = mysql_fetch_assoc($sql );    if($c){		$rep['code']    = 1;		$rep['valid'] = $c;                reponse($rep);} else{		$rep['code']  = 1008;		$rep['error'] = 'Error parameters';		reponse($rep);}}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

function reponse($rep){	echo json_encode($rep); die;}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー



これはクエリ結果を返すことができますか?
こうやってfalseを返さないといけませんね

あー、sqlにmysql_queryがありますね
結局1 2が読み出されてしまいました
ここにうっかり1, 2, 3, 4を書き忘れてしまいました

...それらはどういう意味ですか?
ケース 3 とケース 4 の SQL 命令は同じですか?

1はホームページ情報 2は詳細情報 ログイン不要

3は個人の基本情報 4は個人の実名情報 それぞれ異なり、同じテーブルの異なるフィールドを読み込むことができます

全て単一のデータです

5 はファンドログ 6 はポイントログ
while ループを使用して配列を読み出します



そうすると、このように書く必要があります
$b = mysql_fetch_assoc(mysql_query($sql ));
ログイン後にコピー
ログイン後にコピー


switch ($type) {  case 1:     $sql = SQL语句1     break;  case 2:     $sql = SQL语句2     break;  case 3:     $sql = SQL语句3     break;  case 4:     $sql = SQL语句4     break;  case 5:     $sql = SQL语句5     break;  case 6:     $sql = SQL语句6     break;}$a =  = mysql_fetch_assoc($sql ); if($a){    $rep['code']    = 1;    $rep['valid'] = $a;    reponse($rep);}else{    $rep['code']  = 1008;    $rep['error'] = 'Error parameters';    reponse($rep);}
ログイン後にコピー


これは問題ありませんが、小さな問題があります

それは、成功するとデータが返されます

しかし、失敗した場合に返されるエラーメッセージは異なります。 また、空であると判断する必要がありますが、間違っているわけではありません

したがって、それを完全に理解するには、これが最善ではないと思います。

いくつか調整したので全体的な動作は問題ありませんが、最適化できる部分はあるはずです

ちなみに、私の場合は実際に16件の関数を書くのはかなり面倒ですが、この方法で学びました。お二人とも

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート