###実現したいこと
$get_data
がcorrect
ではないとき、echo '「$get_data」が「correct」ではありません。';
を出力させたい。
ただし、ブサイクにならないように!
###該当のコースコード
check_data($check_data){}
という関数があります。$get_data
がcorrect
かどうかを判定し、correct
なら$data1
と$data2
を返すという処理です。
しかしブサイクな部分があります。
$get_data
がcorrect
ではない場合です。
(コメントアウトをなくして、$get_data = 'correct';
ではなく$get_data = 'incorrect';
にした場合です。)
現状では'error'
をreturn
しているのですが、このときにdata1
とdata2
のどちらに対してもreturn array( $data1, $data2 );
と返してやらなければならない部分がとてもブサイクに感じます。
実際には$data3
や$data4
とたくさんあるので、いちいち書きたくありません。
しかしこうせずdata1
だけを'error'
にしてreturn array( $data1 );
などとすれば、list( $data1, $data2 ) = check_data($get_data);
のところで「おいおい、配列の数おかしいやろ(PHP Notice: Undefined offset: 1 in
)」と怒られてしまいます。
そこでお聞きしたいのですが、$get_data
がcorrect
ではないとき、このブサイクな方法を使うことなく、echo '「$get_data」が「correct」ではありません。';
を出力させるには、どうしたらよいでしょうか?
PHP
1<?php 2function foo() { 3 4 function check_data($check_data){ 5 if( $check_data == 'correct' ) { 6 $data1 = 'ok1'; 7 $data2 = 'ok2'; 8 return array( $data1, $data2 ); 9 }else{ 10 $data1 = 'error'; 11 $data2 = 'error'; 12 return array( $data1, $data2 ); 13 } 14 } 15 16 $get_data = 'correct'; 17 //$get_data = 'incorrect'; 18 19 if( !empty($get_data) ){ 20 list( $data1, $data2 ) = check_data($get_data); 21 } 22 23 if( $data1 == 'error' ){ 24 echo '「$get_data」が「correct」ではありません。'; 25 }else{ 26 echo '「$get_data」が「correct」です。'.PHP_EOL; 27 echo $data1.PHP_EOL; 28 echo $data2.PHP_EOL; 29 } 30 31} 32 33foo();
回答4件
あなたの回答
tips
プレビュー