「PHP言語」の「関数」の作り方と「便利」な関数の使い方を学ぼう!

PHPでの「関数(Function)」の作り方や使い方を学んでいきたいのですが、これまでに学んだ「C・C++言語」でも関数の使い方は一通り学んできた(つもり)なので、PHP特有の関数などについても学んでいきたいと思います。

「関数」はあまり作った経験が無いので、作る練習もしないといけないのと、以前に学んでから時間が空いているので、忘れているところもありそうです。

「関数(Function)」の作り方とPHPの関数

関数を作るためには、

function 関数名 ( 引数名1, 引数名2・・・・・) {
    // 関数で実行する処理を書く
    return 戻り値;
}

のように作っていきます。

では、サンプルを作ってみたいと思います。

<?php
function getLunch(){
    $foods = array('ラーメン','うどん','焼きそば','牛丼','オムライス');
    $rand_val = mt_rand(0, count($foods) -1);
    return $foods[$rand_val];
}
?>
<!DOCTYPE html>
    <head>
    <meta charset="utf-8">
    </head>
    <body>
        <h1>■お昼ごはん</h1>
        <ul>
            今日はお昼ごはんに、<h2><?php print getLunch(); ?></h2>を食べてみませんか?
        </ul>
    </body>
</html>

のように「お昼ごはん」を提案してくれる関数を作ってみました。

何を食べようか悩む機会が多い自分には「良き関数」です(⌒⌒)

関数の内容はというと、「お昼ごはん」の情報を格納した配列を作り、「ランダムな値」を元にお昼ごはんを選択するというシンプルな内容になっています。

関数の利用例

関数は「複数の処理をまとめる」ことができる仕組みなのですが、たくさん処理が増えてくると、関数に分割していくことで、処理の内容がわかりやすくなるというメリットもあります。

関数は「PHPで用意されているもの」を利用することもできるので、今回は、いろいろな関数を使って学んでいきたいと思います。

「配列」を便利に扱える関数

ここから「配列」を扱える「便利」な関数の使い方を学んでいきたいと思います。

引数には、ランダムな要素を取得する配列を指定し、戻り値はランダム値が返ってきます。

「array_rand」関数

あらかじめ用意しておいた配列の中から「ランダム」に要素を取得できる関数が、「array_rand」です。

<?php
$oyatsu = array('チョコレート','クッキー','饅頭','煎餅','ケーキ');
?>
<!DOCTYPE html>
    <head>
    <meta charset="utf-8">
    </head>
    <body>
        <h1>■今日のおやつは?</h1>
        <ul>
            今日はおやつは、<h2><?php print $oyatsu[array_rand($oyatsu)]; ?></h2>でいかがでしょうか?
        </ul>
    </body>
</html>

内容は「おやつ」になりましたが、動作は先ほど作ったオリジナル関数の「お昼ごはん」と同じです。

「array_rand」関数の利用例

のように、「おやつ」をランダムに「おススメ」してくれるようになりました。

「array_merge」関数

複数の配列をまとめて1つに配列にまとめたい場合は、「array_merge」関数を使うことができます。

「array_merge」関数の引数には、結合する配列を指定し、戻り値は「結合された配列」が返されます。

例えば、

<?php
$data1 = array(1,2,3);
$data2 = array(4,5);

$concat_data = array_merge($data1, $data2);

var_dump($concat_data);

のように作って実行すると、

array(5) { 
    [0]=> int(1) 
    [1]=> int(2) 
    [2]=> int(3) 
    [3]=> int(4) 
    [4]=> int(5) 
} 

のように表示されます。

ちゃんと配列の中身が結合されているのがわかりますね。

「array_push」関数

配列の最後に要素を追加できるのが、「array_push」関数です。

第一引数に、「追加元のデータ」、第二引数に「追加するデータ」を指定し、戻り値には、「追加後の配列要素の個数」が返ってきます。

<?php
$jobs = array('会計事務','プログラマ','ショップ販売員');
array_push($jobs,'デザイナー');
var_dump($jobs);

のようにプログラムを作って実行してみると、

array(4) { 
    [0]=> string(12) "会計事務" 
    [1]=> string(15) "プログラマ" 
    [2]=> string(21) "ショップ販売員" 
    [3]=> string(15) "デザイナー" 
} 

のように表示されます。

「in_array」関数

配列の中に「特定の値」があるかを調べることができるのが、「in_array」関数です。

第一引数には、「配列の中から探す値」を指定し、第2引数には、「値を探す対象の配列」を渡します。

指定した値があれば、「true」が返り、値が無ければ「false」が返ってきます。

プログラムを、

<?php
$drinks = array('orange','energy','water','tea','coffee');
var_dump(in_array('tea', $drinks));
var_dump(in_array('beer', $drinks));

ように作って実行すると、

bool(true) 
bool(false) 

のように表示されます。

「array_sum」関数

配列の中に値を格納して、「値の合計」を求めたい場合は、「array_sum」関数を利用すると合計値を求めることができます。

例えば、

<?php
$numbers = array(1,2,3,4,5);
var_dump(array_sum($numbers));

のように作成実行してみると、

int(15) 

のように表示され、ちゃんと配列の合計が計算できているのがわかりますね。

「array_unique」関数

配列内の値の重複を削除することができる関数が「array_unique」関数です。

引数に、「重複を削除したい配列」を渡すと、「重複を削除した配列」が返ってきます。

<?php
$chars = array('あ','い','あ','う','え','お','う','う','い','あ');
var_dump(array_unique($chars));

のように、重複した「あいうえお」の文字の配列を引数に「array_unique」関数を実行してみると、

array(5) { 
    [0]=> string(3) "あ"
    [1]=> string(3) "い" 
    [3]=> string(3) "う" 
    [4]=> string(3) "え" 
    [5]=> string(3) "お" 
} 

のように表示され、「配列の重複」が削除できているのが確認できました。

「sort」関数

配列の内容を並び替えることができる関数が、「sort」関数です。

例えば、「a」~「o」の3組ずつの文字列を並び替えるプログラムを作ってみると、

<?php
$words = array('mno','def','ghi','abc','jkl');
sort($words);
var_dump($words);

のようになります。配列の中身は初めはバラバラになっていますが、

array(5) { 
    [0]=> string(3) "abc" 
    [1]=> string(3) "def" 
    [2]=> string(3) "ghi" 
    [3]=> string(3) "jkl" 
    [4]=> string(3) "mno" 
} 

のように配列の内容が並び替えた状態で表示されます。

「shuffle」関数

配列の中身をランダムに並び替えた時に使えるのが「shuffle」関数です。

この関数を実行する度に、配列の中身が毎回異なる順番に並び替えられます。例えば、

<?php
$study = array('国語','数学','英語','理科','社会');
shuffle($study);
var_dump($study);

のように書いて、実行すると、

array(5) { 
    [0]=> string(6) "社会" 
    [1]=> string(6) "英語" 
    [2]=> string(6) "国語" 
    [3]=> string(6) "数学" 
    [4]=> string(6) "理科" 
} 

のように、ランダムに配列の順番が変化して出力されます。

他にも配列を扱うことができる関数がありますので、

→「配列 関数」

を見てみてください。

PHPには他にもさまざまな機能を持った関数がありますので、引き続きいろいろな関数の使い方を学んでいきたいと思います、

→(前へ)「PHP」の「配列・連想配列」と「スーパーグローバル」変数を勉強しよう!!

→(次へ)「PHP言語」の「クラス」の作り方と使い方

→「Twitter:@satoru78888」

HOMEへ