PHP関数では、何かがエコーされる可能性があるのに、それを返すことができない場合があります。
たとえば、これは結果をページに正常にエコーします。
function get_page_id( $path ) {
global $mysqli;
if ($stmt = $mysqli->prepare("SELECT state FROM country WHERE city = ?")) {
$stmt->bind_param("s", $city);
$stmt->execute();
$stmt->bind_result($state);
$stmt->fetch();
$stmt->close();
echo $state;
}
}
ただし、この関数は次の値を返しません。
function get_page_id( $path ) {
global $mysqli;
if ($stmt = $mysqli->prepare("SELECT state FROM country WHERE city = ?")) {
$stmt->bind_param("s", $city);
$stmt->execute();
$stmt->bind_result($state);
$stmt->fetch();
$stmt->close();
return $state;
}
}
値をエコーできるが返されないようにする理由は何ですか?
$ state変数は他の場所で呼び出され、グローバルとして含まれていますが、例には含まれていません。興味深いのは、$stateを返すように関数を変更したときです。」; 期待どおりの結果が返されますが、空の文字列を追加した場合にのみこれが行われます。なぜそうなるのでしょうか?