3日目
◇ 関数ないで別の関数をよびだす。 ◇
<?php
// 正の整数であれば T、それ以外は F
function checkNumber($value)
{
// 与えられた値が文字列や浮動小数点数などの別のデータ型である可能性があるため (int) $value 0より大きいか調べる。
return is_numeric($value) && (int)$value > 0;
}
function add($a, $b)
{
if(!checkNumber($a) || !checkNumber($b))
{
return 'INVALD';
}
$total = $a + $b;
return $total;
}
$result = add(3,10);
print "<p>計算結果:" . $result . "</p>";
$result = add(5,-4);
print "<p>計算結果:" . $result . "</p>";
計算結果:13
計算結果:INVALD
キャストはデータの操作
◇関数の値渡し◇
<?php
function add($a)
{
$a += 10;
}
$argument = 5;
$b = add($argument);
print '$argumentは' . $argument . 'です。';
// 結果 : 5
関数内で引数の値を変更しても、元の変数には影響を与えない($argument*)ということです。 → return 文 だと元の呼び出し元が変わる。*
よび出し元に影響を与えるか、与えないかのことを意味します。
◇関数のリファレンス渡し◇
<?php
function add(&$a)
{
$a += 10;
}
$argument = 5;
add($argument);
print '$argumentは' . $argument . 'です。';
・リファレンス渡し(参照渡し)は、変数の値ではなく、その変数自体への参照(メモリ上の位置情報)を関数に渡す方法です。内外とわずすべてに影響が出る。
・元の変数にもその変更が反映されるようになります。
計算結果:15
◇エラーメッセ―ジによるリファレンス渡し◇
<?php
function checkNumber($value)
{
return is_numeric($value) && (int)$value > 0;
}
function add($a,$b,&$errorMessage)
{
// checkNumber がなかったら if を実行
if(!checkNumber($a))
{
$a = 0;
$errorMessage = 'err : 1番目の引数が正の整数ではありません。';
}
if(!checkNumber($b))
{
$b = 0;
$errorMessage = 'err : 2番目の引数が正の整数ではありません。';
}
// checkNumber で帰ってきた a,bを計算する。
$total = $a + $b;
return $total;
}
$errorMessage = null;
$result = add(3,10,$errorMessage);
print '計算結果;'. $result . $errorMessage . '<br>';
$errorMessage = null;
$result = add(4, -5,$errorMessage);
print '計算結果;'. $result . $errorMessage . '<br>';
結果:
計算結果;13
計算結果;4err : 2番目の引数が正の整数ではありません。
◇ グローバル変数 ◇
<?php
$num1 = 3;
$num2 = 10;
function add()
{
// 関数外で定義された $num1, $num2を関数内で使えるようにする。
global $num1, $num2;
return $num1 + $num2;
}
$result = add();
print $result;
◇ 引数と戻り値のデータ型を指定する。 ◇
→ 期待する引数のデータ型と予期していない戻り値のデータ型を示したいときに使用する。
function 関数名 (データ型 値, データ型 値,):戻り値のデータ型
function something(int $num, string $message):bool
この時の引数、戻り値はNULLではいけない。
引数、戻り値にNULLを入れたいときは → データ型の前に ? をつける。
function something(int $num, ?string $message): ?bool
ーーーーーーー思ったことーーーーーーーー
今日は仕事後っていうことで少し少な目
キャスト、データ型、参照渡し。。。。
C言語の勉強してる気分。。。PHPなのになんか違和感がある。。。でもプログラミングでは常識、、、。
でもいまいちまだ、参照渡しがPHPで使われてるとこがあやふやな感じ。。。未熟未熟。。。
この記事が気に入ったらサポートをしてみませんか?