-3

次のような状況があります。

function getData($key,$value){
   if($key==$value){
     echo 'Key-Value Matched';
       if($value=='foo'){
         $result = 'value is foo';
       }else{
         $result = 'value is bar';
       }
    }
return $result; 
}

 getData('bar','foo');
 echo $result;
 getData('foo','foo'); // Key-Value Matched
 echo $result;

上記のコードのように、1 つの php 関数からエコーと戻り値が必要であることがわかります。しかし、上記の関数の実行から、エコー部分は正しく実行されていますが、 $result はその関数から来ていません。上記の関数からのエコーと戻り値の両方を達成するにはどうすればよいですか?

4

6 に答える 6

1

のときに $result を初期化できませんでした$key != $value。else ブロックを追加する必要があります。このような:

function getData($key,$value){
   if($key==$value){
     echo 'Key-Value Matched';
       if($value=='foo'){
         $result = 'value is foo';
       }else{
         $result = 'value is bar';
       }
    } else {
         $result = 'value is undefined';
    }
    return $result; 
}

また、使用する前に戻り値を保存する必要がありますgetData()(@bwoebiが言及したように):

$result = getData('bar','foo');
echo $result;
于 2013-04-06T12:46:16.760 に答える
0

function: にローカル変数があります$resultが、これ$resultはグローバル変数ではありません。

あなたはそうしなければなりません:

echo getdata('bar', 'foo');
echo getData('sss', 'sss');

等々...

于 2013-04-06T12:49:02.783 に答える
0
function getData($key,$value){
    if($key===$value){
       echo 'Key-Value Matched';
       if($value=='foo'){
         $result = 'value is foo';
       }else{
         $result = 'value is bar';
       }
       return $result; 
    }else {
       echo 'Key-Value not matched';
    }
}

 echo getData('bar','foo');
 echo getData('foo','foo');
  • 同一文字列の比較は、ベスト プラクティスとして「===」を使用して行う必要があります
  • $result 変数は、関数の外部にない関数のみに制限されています
于 2013-04-06T12:49:21.740 に答える
0

getData関数で変数を更新することが本当に必要な場合(お勧めしません)、キーワード$resultを使用して、関数内でグローバル変数として宣言できます。global

function getData($key, $value){
  global $result;

  if ($key == $value) {
    $result = 'Key-Value Matched';
    if ($value == 'foo') {
      $result = 'value is foo';
    } else {
      $result = 'value is bar';
    }
  }
  return $result; 
}

getData('bar','foo');
echo $result;         // Will print "value is foo"
getData('foo','foo');
echo $result;         // Will print "Key-Value matched"

しかし、繰り返しになりますが、これを行うべきではありません (コードが非常に混乱する可能性があります)。getDatareturn を使用して で出力するだけechoです。

于 2013-04-06T12:58:44.413 に答える
0

最初に戻り値を保存する必要があります。

 $result = getData('bar','foo');
于 2013-04-06T12:46:26.937 に答える
-1

関数内でエコーを作成しないでください。すべての出力を配列に入れて、次のようにブラウザーに表示することをお勧めします。

function getData($key,$value){
   $result = array();
   if($key==$value){
     $result[] = 'Key-Value Matched';
       if($value=='foo'){
         $result[] = 'value is foo';
       }else{
         $result[] = 'value is bar';
       }
    }
return $result; 
}

 $result = getData('bar','foo');
 foreach($result as $entry)
 {
   echo $entry."<br />"
 }
 $result = getData('foo','foo'); // Key-Value Matched
 foreach($result as $entry)
 {
   echo $entry."<br />"
 }
于 2013-04-06T12:50:11.477 に答える