忍者ブログ

からすまる日誌

2020020502 ユーザー定義関数

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2020020502 ユーザー定義関数

関数内の変数を関数外で呼び出そうとするとどうなるか?
Undefined variable result
アンディファインド バリアブル ふにふに
resultという変数はないよ~
 
 
ここまで
--->myfunction.php
 
<!DOCTYPE html>
<html lang="ja">
 <head>
  <meta charset="utf-8">
  <title>ユーザー定義関数</title>
  <link rel="stylesheet" href="test1.css">
 </head>
 <body>
  <h1>ユーザー定義関数</h1>
<?php
//ユーザー定義関数add
//戻り値なしで関数内で書き出す
function add($num1,$num2){
 echo $num1+$num2;
}
add(10,20);
?>
  
<?php
//ユーザー定義関数minus
//戻り値ありで関数の呼び出し元の変数に格納
function minus($num1,$num2){
 return $num1-$num2;
}
$hoge=minus(30,10);
echo $hoge;
?>
 </body>
</html>
 

関数は変数と違って「どこで宣言しているか」は関係ない。なんなら呼び出し元が先に記述されて、関数本体は末尾でも全然OK 

スコープの範囲の実験
 
--->myfunction2.php
 
<!DOCTYPE html>
<html lang="ja">
 <head>
  <meta charset="utf-8">
  <title>ユーザー定義関数</title>
  <link rel="stylesheet" href="test1.css">
 </head>
 <body>
  <h1>ユーザー定義関数</h1>
  
<?php
$result="いいいい";
function h($str){
 $result=htmlspecialchars($str,ENT_QUOTES);
}
h("ああああ");
echo $result;
?>
 </body>
</html>

ユーザー定義関数「外」で作った変数も、関数内で使えない。
値のやり取りは「引数と返り値」のみで行う。
 
returnが2行もありえない。
return $result1;
return "ああああ";
$result1が返る。エラーは出ないらしい。
 
ただif-elseだったら、returnが2つ出てくる可能性はあるよ。 

グローバル変数をphpでつくることもできるらしいが(関数外/内で使える)、phpでは普通作らないらしいよ
 
関数への受け渡しや受け取りは、引数やらreturnをつかってやり取りしますよ
 

returnで複数の値を返すことはできる
その場合配列を使う
 
--->myfunction3.php
 
<!DOCTYPE html>
<html lang="ja">
 <head>
  <meta charset="utf-8">
  <title>ユーザー定義関数</title>
  <link rel="stylesheet" href="test1.css">
 </head>
 <body>
  <h1>ユーザー定義関数</h1>
 
<?php
function minus($num1,$num2){
 $num3=$num1-$num2;
 $res[]=$num1;
 $res[]=$num2;
 $res[]=$num3;
 return $res;
}
print_r(minus(30,20));
?>
 </body>
</html>
---実行結果
 
ユーザー定義関数
Array ( [0] => 30 [1] => 20 [2] => 10 )
 
 
はいれつで書き出される
 

それにしても直接echoとかprint_rとかでオリジナルの関数(ユーザー定義関数)と引数を記述しちゃう(当然戻り値あり)のは抵抗があるんだが、
普通はいったん変数に戻り値を格納する。
ただ、それは「ほかでもつかうのなら」変数にいれるし、一回こっきり出力するだけならダイレクト記述もありうるよ。
 

では4つのファイルを作りますよ
header.php
main.php
footer.php
functions.php
 
main→functions→
 
PR

コメント

ブログ内検索

カレンダー

03 2025/04 05
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30