range関数:一定範囲の連続した値を持つ配列を作成する

使い方

$vars = range( $start, $end, $step );

PHPにはわざわざfor文を使って作らなければならないような配列も1発で作ってくれる、これまたやらしい関数があります。
例えば2から100までの偶数だけを値に持つ配列を作るなんてことが可能です。

続きを読む

compact関数:複数の変数を1つの配列に集約する

使い方

$vars = compact( "var1", "var2", "var3" ... );

extract関数を以前ご紹介しましたが、その反対を行う関数もPHPでは用意されています。

つまり、別々の名前で宣言した変数を1つの配列に集約することができる関数です。
百聞は一見に如かず。早速サンプルをご覧ください。

サンプルプログラム

<?php
$banana = 100;
$melon = 20;
$grape = 300;

$fruits = compact("banana", "melon", "grape");
var_export($fruits);

実行結果

array (
  'banana' => 100,
  'melon' => 20,
  'grape' => 300,
)

このように何も難しくはありません。

ただし、注意点としてcompact関数の引数には、変数をそのまま渡すのではなく、変数の名前を文字列で指定しなければなりません。
勘違いしているとハマります。。

使いどころ

コントローラーで宣言した変数をビューで参照するときに、変数を渡して上げたいときなどに意外と役に立ちます。
個人的な事情で、ここ最近はCakePHPでの開発が多いため、

$this->set('var1', $var1);
$this->set('var2', $var2);

と書くよりは、
compact関数を使って

$this->set(compact('var1', 'var2'));

と言う風に1回で書けるので重宝しています。

公式サイト

http://php.net/manual/ja/function.compact.php

idate関数:日付時刻の1つの情報を整数で取得する

使い方

$int_value = idate( $format, $time );

プログラムで日付や時刻を扱うのは面倒ですよね。
そんなあなたに少しだけ役に立つ情報になれば。。。

PHPで日付や時刻の情報を取得したくなったら、date関数をお使いの方も多いかと思いますが、日付の情報のうち、年だけとか、月だけ、もしくは曜日だけの情報が欲しいと思ったら、idate関数を思い出してください。

idate関数は第1引数に欲しい情報の文字を指定すると、第2引数で指定されたタイムスタンプ(省略時はtime()の戻り値)の該当情報を整数で返してくれます。
言葉だけではわかりづらいと思いますので、サンプルを御見せしましょう。

サンプルプログラム

<?php
date_default_timezone_set('Asia/Tokyo');

$now = time();
$formats = array(
'Y', 'm', 'd', 'H', 'i', 's', 't', 'w', 'L'
);

foreach($formats as $format) {
  $d = idate($format, $now);
  echo "idate('{$format}') => ".print_r($d, true).PHP_EOL;
}

実行結果

idate('Y') => 2014
idate('m') => 5
idate('d') => 7
idate('H') => 10
idate('i') => 46
idate('s') => 29
idate('t') => 31
idate('w') => 3
idate('L') => 0

このように第一引数に何を指定するかによっていくつかの情報から1つだけを簡単に取ることが可能です。
指定できる第1引数の種類については、公式サイトをご覧ください。

使いどころ

この日付の年は閏年なのか知りたくなったら、idate関数にLを指定するのが手っ取り早いです。
他にも曜日を調べたり、年を調べたり、月を調べたりと言うときにはこの関数を使うのも一つの手です。
なんたってこの関数の戻り値は整数で返りますので、扱いやすいと思います。

ちなみに、先日紹介したcal_days_in_month関数と同じような情報も、idate関数を使って取得することが可能です。

公式サイト

http://www.php.net/manual/ja/function.idate.php