0

関数の内部からいくつかの値を取得し、それらを外部で計算に使用したいですか? 出来ますか?私はPHPが初めてです。

コードがあるとします:

function snltc($ema)
{ 
    $uemail = $ema;

    $snlc = mysql_query("SELECT * FROM usertree WHERE slot1='$uemail' || slot2='$uemail' || slot3='$uemail' || slot4='$uemail' || slot5='$uemail'");
    $dsnl = mysql_fetch_array($snlc);

    echo $dsnl['supemail'];
    echo "</br>";
    echo $dsnl['snlt'];
    $sup1 = $dsnl['supemail'];
    $snltu = $dsnl['snlt'] + 1;
    echo "</br>";
    echo $snltu;
    mysql_query("UPDATE usertree SET snlt='$snltu' WHERE supemail='$sup1'");
    $newsnl = mysql_fetch_array($snlc);
    echo "</br>";
    $snlval = $newsnl['snlt'];
    echo "</br>";
    return $snlval;
}

echo "</br>";
echo snltc('gami@gmail.com');

さて、私がこのコードに求めている$snlvalのは、関数の外と関数の外で使用$sup1することです。どうすればこれを達成できますか?

4

4 に答える 4

2

それを配列として返すことができます:

function snltc($ema){ 
    $uemail = $ema;
    $snlc = mysql_query("SELECT * FROM usertree WHERE slot1='$uemail' || slot2='$uemail' || slot3='$uemail' || slot4='$uemail' || slot5='$uemail'");
    $dsnl = mysql_fetch_array($snlc);
    $sup1 = $dsnl['supemail'];
    $snltu = $dsnl['snlt'] + 1;
    mysql_query("UPDATE usertree SET snlt='$snltu' WHERE supemail='$sup1'");
    $return = array();
    $return['snlval'] = $snltu;
    $return['sup1'] = $sup1;
    return $return;
}

その後、使用できます

$return = snltc('gami@gmail.com');
echo $return['snlval'];
echo $return['sup1'];
于 2012-09-18T11:01:06.370 に答える
0

あなたの機能では:

return array($snival, $sup1);

関数の呼び出し:

$values = snltc($x);
echo $values[0] . $values[1];
于 2012-09-18T11:01:04.503 に答える
0

両方の値を配列で返します。

function snltc($ema)
{
  // ...
  return array($sup1, $snlval);
}

list($sup1, $snlval) = snltc('gami@gmail.com');
于 2012-09-18T11:01:39.430 に答える
0

今私がこのコードから欲しいのは、関数の外側で $snlval を使用し、関数の外側で $sup1 を使用することです。どうすればこれを達成できますか?

2つの変数を返したいと仮定すると..それらを配列に入れて配列を返すので、returnステートメントは次のようになります

return array('snlval' => $snlval, 'sup1' => $sup1 );

したがって、この関数を呼び出すと...

$result = snltc('gami@gmail.com');
$snlval = $result['snlval'];
$sup1 = $result['sup1'];
于 2012-09-18T11:02:13.090 に答える