ホームページ制作,維持・保守
サーバーシステム構築・管理
ネットワーク構築・管理
IT環境サポート
インフラ構築サポート
ITアウトソーシング
WEBプログラミング

PHP文法基礎::: 関数

森之宮 0 504 0

ユーザ関数宣言:ユーザにより定義された関数の宣言 

関数は下記のように宣言します。


<!--?php
function 関数名 ($引数1,$引数2,$引数3 ... )
{
   echo "関数です。!!!";
   return 戻り値 ;
}
?-->


関数名は変数名と同じ識別子を使用します。 因子は関数呼出時に関数内部に伝えられる値です。 

先に、制御構造で学んだように、returnを通じて実行結果を返すことができます。 


条件付関数宣言:条件によって宣言される関数の宣言方法


<!--?php


$use=true;


bar();


//真の場合のみ関数が宣言されます。

//ここまではまだ関数が宣言されていません。

if($use){ 

function foo(){echo"条件付き関数";}

}

//これで関数が宣言されましたので、呼び出してみます。

foo();


function bar() 

{

echo"呼び出し部分の下に関数が定義されても大丈夫です~";

}


?-->


上記のソースで、二つが理解できます。

1つは関数宣言が後になっていても呼び出しは可能である。 もう1つは条件的に関数を宣言することができる。 

もし$useがfalseである場合や宣言前に呼び出しをしたら関数が定義されなかったということでプログラムは深刻なエラーを吐きます。 


<!--?php

function foo() 

{

function bar() 

{

echo"foo()を呼び出しするまでは存在しません。\n";

}

}


//bar()関数がまだ存在しないためにbar関数を呼び出すことができません。


foo();


//foo()関数を実行することによってbar()関数が宣言されました。

//これでbar()関数を使用することができます。


bar();

?-->


このソースは少し面白いですね。 関数内に関数を定義して、関数が呼び出されるまでは使用が不可能です。 

関数が呼び出しがあってから関数内に関数が宣言され、その後から使用が可能になります。 



 

*参考
アレイ(配列)を因子を通じて伝えすることは厳密に言うと、値による伝達ではありません。                        しかし、PHPではポインタの概念がないので、値による伝達にみてもかまいません。


2) 参照による渡し方(passing by reference) 


<!--?php

function add_str(&$string)

{

$string.='PHP勉強';

}


$str='ヒデと一緒に';

add_str($str);

echo$str; 

?-->


参照を通じて渡された変数は修正すれば元の変数まで影響を及ぼすことになります。

それで$str変数を出力したにも関わらず$string変数が出力されてしまいます。

実際に$strと$stringは名前が違うだけで、同じ変数です。


3)基本因子の値


<!--?php

function world_net($url="http://world-idc.net")

{

return"ホームページアドレス:$url<br/-->


";

}

echo world_net();

echo world_net("http://www.world-idc.net");

?>


関数因子にデフォルト値を設定しておいたのです。

値が渡されなかった場合、基本値をそのまま利用することです。

結果は次のようです。


ホームページアドレス:http://world-idc.net

ホームページアドレス:http://www.world-idc.net 


この基本因子の値を設定する際の留意しなければならない点があります。

因子がいくつかある時に、基本的因子値を設定する因子を一番最後に置かなければならないということです。

もし最初から因子に基本値を指定したらやっぱり~エラーを味わうことになることです。


関数結果を返す:関数の処理結果を返す2つの方法 


1)値を返す


<!--?php
function square ($num)
{
   return $num * $num;
}
echo square (4);
?--> 
乗をする関数です。 乗をした結果を値(16)として返します。 
<!--?php
function numbers()
{
   return array (0, 1, 2);
}
?--> 
上記のようにアレイを返すことも出来ます。
1)参照を返す
<!--?php
function &returns_reference()
{
   return $someref;
}

$newref =& returns_reference();
?--> 
参照を返すときは必ず関数名の頭に&記号を付けます。
これは関数の戻り値が参照であることを明示するためです。

0 コメント