見出し画像

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で使われてるとこがあやふやな感じ。。。未熟未熟。。。

この記事が気に入ったらサポートをしてみませんか?