関数
関数とは
- 何らかの処理をして、返り値を返すもの
- 関数名( 引数 )
《例》
<?php $today = date('Ynj'); echo $today; ?>
- PHPに用意されている date()関数を使用して、表示した日時を返しています
- date()と引数を書くだけで、「サバーに日付を問い合わせる」「日付を取得する」「日付を適切な文字列にする」という処理を自動的に行うことができる
引数と関数の関係
- 引数は1つとは限らない
- 引数がない場合もある
多くの関数に引数がある理由
- 出力形式の指定→処理方法の詳細の指定
- 日時の指定→処理元となるデータの指定
date( その書式で取得するか , いつの日付を取得するか )
WordPressでよく使われるPHPの関数
《ビルトイン関数例》
関数 | 用途 |
---|---|
printf / sprintf | sprintf( 'View all posts by %s', $auther )のように、所定の書式に文字列を差し込む。printfはecho(画面に表示)し、sprintfはechoしない |
function_exists | function_exists()で、関数が存在するかどうかをチェックする |
isset / empty | 値があるかどうかをチェックする。issetは変数がセットされていればtrueになる。emptyは変数がセットされていない場合、0や空文字列の場合にtrueになる |
in_array | in_array( 値, 配列 )で、配列内に値があるかどうかをチェックする |
count | 配列の要素の数を返す |
array_shift | 配列から要素を1つずつ取り出す |
implode | implode( '、', $array )のように、配列を文字列に展開する |
var_dump | 変数や配列に格納されているデータを出力する。制作途中での確認で使う |
自分で関数を作成する
function 関数名(引数名) {
実際の処理をここに記入
処理の元になる引数は上記の引数名を利用して記述する
}
- 「function」は、「これから関数を定義します」という宣言です
例
- 画像を正しく表示させるためには「sample.jpg」を/wp-content/uploads/にアップロードし、「◯◯.com」の部分を正しいURLに変更する必要があります
<?php get_header(); ?> <?php function output_img_link($img) { echo '<img src="'; echo $img; echo '">'; } output_img_link('http://◯◯.com/wp-content/uploads/sample.jpg'); ?> <?php get_footer(); ?>
最終的には次のようなimg要素が出力されます。
<img src="http://◯◯.com/wp-content/uploads/sample.jpg">
※この例は、セキュリティを考慮していません。
引数は配列の場合もある
<?php get_header(); ?> <?php function output_img_link_from_array($img) { echo '<img src="'; echo $img[0]; echo '" width="'; echo $img[1]; echo '" height="'; echo $img[2]; echo '">'; } $img = array('http://◯◯.com/wp-content/uploads/sample.jpg','640','480'); output_img_link_from_array($img); ?> <?php get_footer(); ?>
最終的には次のようなimg要素が出力されます。
<img src="http://◯◯.com/wp-content/uploads/sample.jpg" width="640" height="480">
関数を定義する場所
- 関数を定義する場所は、関数を呼び出す場所と離れていてもかまいません
- 別ファイルに分かれていても、順序も自由で関数の定義の前に呼び出していても動作します
<?php get_header(); ?> <?php output_img_link('http://◯◯.com/wp-content/uploads/sample.jpg'); function output_img_link($img) { echo '<img src="'; echo $img; echo '">'; } ?> <?php get_footer(); ?>