PHPの覚書

日付フォーマット変換(日時にも)

変換前:2012/2/29
変換後:2012-02-29
	$d='2012/2/29';
	echo "変換前:".$d."<br>";
	$d2=date('Y-m-d',strtotime($d));
	echo "変換後:".$d2."<br>";
				

変換前:2012/2/29 12:13:14
変換後:12:13:14
	$d='2012/2/29 12:13:14';
	echo "変換前:".$d."<br>";
	$d2=date('h:i:s',strtotime($d));
	echo "変換後:".$d2."<br>";
				

$d=xxxx
		$d='xxxx';
		echo '$d='.$d."<br>";
		$x=strtotime($d);
		echo $x;

				

本日を取得する。
$d=date('Y-m-d');
→2015-7-31

現在日時を取得する。
$dt=date('Y-m-d H:i:s');
→2015-07-31
h:i:sにすると03:07:36となる12時間表記になるので注意。 $d2=date('Y-m-d H:i:s');


週始めの日付を取得

beginWeekDate自作関数について。
引数で指定した日付の週の、週始めを取得する。
週始めは日曜日である。ただし月曜日フラグをONにした場合、月曜日が週始めとなる。

	$date1 = "2016-6-15";
	$date2 = beginWeekDate($date1);
	echo "指定日:".$date1.'<br>';
	echo "週始め:".$date2.'<br>';
	
	/**
	 * 週始めの日付を取得
	 * 
	 * 指定日付の週の週始めを取得する。
	 * 週始めは日曜日である。ただし月曜日フラグをONにした場合、月曜日が週始めとなる。
	 * 
	 * @param date or string $date1 指定日付
	 * @param bool $monday_flg 月曜日フラグ  省略可  true:月曜日が週始めとなる。
	 * @param string $format 日付フォーマット【省略可】
	 */
	function beginWeekDate($date1,$monday_flg=0,$format='Y-m-d') {
		$w = date("w",strtotime($date1));
		
		if($w==0){
			if(!empty($monday_flg)){
				$bwDate = date($format, strtotime("-6 day", strtotime($date1)));
			}else{
				$bwDate = date($format, strtotime($date1));
			}
			
		}else{
			if(!empty($monday_flg)){
				$w--;
			}
			$bwDate = date($format, strtotime("-{$w} day", strtotime($date1)));
		}
	
		return $bwDate;
	}
	

出力
	指定日:2016-6-15
	週始め:2016-06-12
	

参考


月初めの日付を取得する

	/**
	 * 引数日付から月初めの日付を取得する。
	 * @param $ymd
	 */
	private function getBeginningMonthDate($ymd) {
		$ym = date("Y-m",strtotime($ymd));
		$d=$ym.'-01';
		return $d;
	}
	

元旦日を取得する

	/**
	 * 引数日付から元旦日を取得する。
	 * @param $ymd
	 */
	private function getBeginningYearDate($ymd) {
		$y = date("Y",strtotime($ymd));
		$d=$y.'-01-01';
		return $d;
	}
	

日付の基本

2038年以降の日付にも対応できる。 ソースコード
	$date = new DateTime("2006-12-12");
	echo $date->format("Y-m-d");
	
本日の場合
	$today = new DateTime();
	echo $today->format("Y-m-d");
	

日付の加算と減算

	$date = new DateTime("2006-12-12");
	echo $date->format("Y-m-d");
	$date->modify("+3 day");
	echo $date->format("Y-m-d");
	


先月を取得する場合
		$date = new DateTime();
		$date->modify("-1 month");
		echo $date->format("Y-m-d");
	

日付比較


	// 誤り
	if('2022-11-3' > '2022-11-10'){
	    echo "2022-11-3が2022-11-10よりも大きい(最新)ということになってしまうので誤り<br><br>";
	}
	
	// 正しい比較
	if(strtotime('2022-11-3') > strtotime('2022-11-10')){
	   
	}else{
	    echo "'2022-11-10'が大きい(最新)<br><br>";
	}
	

PHP5.3以降のみ
	$datetime1 = new DateTime('2009-10-11');
	$datetime2 = new DateTime('2009-10-13');
	$interval = $datetime1->diff($datetime2);
	echo $interval->format('%R%d days');
	

年月日フォーマットから日付型データとして取得

ソースコード
	$strYmd="2010年10月10日";
	$d=DateTime::createFromFormat('Y年m月d日',$strYmd);
	$d=$d->format('Y-m-d');
	

日付のループ

日付範囲内でループさせる場合、特殊なループが必要になる。
PHP5.3から対応しているらしい。



	$start = new DateTime('2012/2/25');
	$end = new DateTime('2012/3/5');

	$interval = DateInterval::createFromDateString('1 day');
	$period = new DatePeriod($start,$interval,$end);

	foreach($period as $d){
		$x= $d->format('Y-m-d');//日付

	}


悪い例
以下のやり方だと無限ループになってしまう。
	$start = '2012/2/25';
	$end = '2012/3/5';
	for($d=$start;$d<=$end;$d++){
		echo $d;//■■■□□□■■■□□□■■■□□□
	}
参考サイト

DateTime型日付と unix timestampの相互変換

DateTime型の日付からunix timestamp取得する場合、以下のようにする。
$u=$d1->format("U");

unix timestampから日付に変換する場合は以下のようにする。
$d2=new DateTime();
$d2->setTimestamp(1165964400);


サンプル

	$d1 = new DateTime("2006-12-12");
	echo $d1->format("Y-m-d H:i:s");
	echo "<br>";
	$u=$d1->format("U");//☆unix timestampを取得

	echo $u;
	echo "<br>";
	$u+=86400;//86400秒を加算して翌日にする。
	echo $u;
	echo "<br>";
	$d2=new DateTime();
	$d2->setTimestamp($u);//☆unix timestampから日付に再変換。
	echo $d2->format("Y-m-d H:i:s");
	

日付ループ(DateIntervalを使わない)

DateIntervalが使えないPHPバージョン(PHP5.2など)で日付ループを行う場合、 UNIXタイプスタンプを利用してループできる。
間隔秒数を調整すれば、1秒毎や分毎などのループも可能。


サンプル



	$d1 = new DateTime("2011-12-30 00:00:00");
	$d2 = new DateTime("2012-3-1 00:00:00");
	echo $d1->format("Y-m-d")."<br>";
	echo $d2->format("Y-m-d")."<br>";

	//それぞれのUNIXタイムスタンプを取得
	$u1=$d1->format("U");
	$u2=$d2->format("U");

	echo $u1."<br>";
	echo $u2."<br>";

	//一日の秒数
	$a=86400;


	echo "☆日付ループ( 'U = Y-m-d H:i:s')<br>";

	//☆日付ループ
	for($u=$u1;$u<=$u2;$u+=$a){

		//setTimestampが使えない場合の代替コード。Datetime::setTimestamp(UNIXタイムスタンプ);
		$y      = date("Y", $u);
		$m      = date("m", $u);
		$d      = date("d", $u);
		$h      = date("H", $u);
		$i      = date("i", $u);
		$s      = date("s", $u);
		echo "{$y}-{$m}-{$d} {$h}:{$i}:{$s}<br>";


	}
	echo "終了<br>";
	


例2(setTimestampが使える場合)
	//開始日付と終了日付をセット
	$d1 = new DateTime("2011-12-30");
	$d2 = new DateTime("2012-3-1");

	//それぞれのUNIXタイムスタンプを取得
	$u1=$d1->format("U");
	$u2=$d2->format("U");

	//間隔秒数に一日の秒数
	$a=86400;


	$d=new DateTime();

	//☆日付ループ
	for($u=$u1;$u<=$u2;$u+=$a){
		$d->setTimestamp($u);//UNIXタイムスタンプから日付に変換。PHP5.2では未対応?
		echo $d->format("Y-m-d");
		echo "<br>\n";
	}
	

JSON変換

JSONエンコード


	$data=array(1=>'ペルシャ',2=>'ボンベイ',3=>'三毛',4=>'シャム',5=>'雉トラ',6=>'スフィンクス');//サンプルデータ
	$json_str=json_encode($data,true);//JSONエンコード
	


JSONデコード


	$json_str = '{"id":"11","animal_name":"test"}';
	$data=json_decode($json_str,true);//JSONデコード
	if($data===null){
		error_log("JSONの展開に失敗しました。  " . json_last_error_msg() . ' ' . $json_str);
	}
	


jsonファイルをJSONデコードする場合


	$json_str = file_get_contents('test.json'); // test.jsonはutf8でWindosで保存されているファイル。(BOMが付いている)

	// BOMを除去する
	$json_str = deleteBom($json_str);
	
	// JSONデコード
	$data=json_decode($json_str,true);
	
	// JSONデコードに失敗した場合
	if ($error = json_last_error_msg()) {
		$err_msg = 
		error_log("JSONの展開に失敗しました。→".$json_str);

	} 


	/**
	 * UTF8ファイルのテキストに付いているBOMを除去する
	 * @param string $str UTF8ファイルから取得したテキストの文字列
	 * @return string BOMを除去した文字列
	 */
	function deleteBom($str){
		if (($str == NULL) || (mb_strlen($str) == 0)) {
			return $str;
		}
		if (ord($str{0}) == 0xef && ord($str{1}) == 0xbb && ord($str{2}) == 0xbf) {
			$str = substr($str, 3);
		}
		return $str;
	}
	
BOMに注意
file_get_contents関数などでutf8で保存されたファイルの文字列を取得する場合、先頭にBOMが付いているので注意すること。
BOMが付いたままだとJSONデコードに失敗する。
BOMはEclipseやいくつかのテキストエディタでは見えない。(文字化けすらしない)
oedit.exeなど一部のテキストエディタではBOMを文字化けで表示させることも可能である。
下記の2つの文字列は一見同じに見えるが、Terapad.exeやoedit.exeなどのテキストエディタへコピペすると文字化けしたBOMを確認できる。
	$json_str = '{"id":"11","enquete_name":"test"}';
	$json_str = '{"id":"11","enquete_name":"test"}';
	
oedit.exeにコピペするとBOMが「?」に文字化けしている。


BOM除去の参考サイト

JSONに次の記号、「<」、「>」、「"」、「'」、「&」、「/」、「¥」が含まれるときのJSONエンコード

下記のようにオプション指定する。
$json = json_encode($data,JSON_HEX_TAG | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_HEX_APOS);

検証


	$data = array(1=>'<',2=>'>',3=>'"',4=>"'",5=>'&',6=>'/',7=>"\\");
	var_dump($data);
	
	array (size=7)
	  1 => string '<' (length=1)
	  2 => string '>' (length=1)
	  3 => string '"' (length=1)
	  4 => string ''' (length=1)
	  5 => string '&' (length=1)
	  6 => string '/' (length=1)
	  7 => string '\' (length=1)
	

JSONエンコードをかけてダンプしてみる。「<」、「>」、「"」、「'」は変換されている。

	$json = json_encode($data,JSON_HEX_TAG | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_HEX_APOS);
	var_dump($json);
	
string '{"1":"\u003C","2":"\u003E","3":"\u0022","4":"\u0027","5":"\u0026","6":"\/","7":"\\"}' (length=84)
	

input要素にこのJSONを埋め込んでもバグにならない。
<input type="text" value='<?php echo $json?>' style="width:100%" />

JavaScriptで埋め込まれたJSON文字列をパースしてみる。

		$json4 = $('#json4').val();
		var data = JSON.parse($json4);
		console.log(data);
	
Object {1: "<", 2: ">", 3: """, 4: "'", 5: "&", 6: "/", 7: "¥"}

詳細検証


json_encodeの第2引数にtrue

json_encodeの第2引数にtrueを指定した場合、「<>」記号を含むデータも、JavaScriptでJSONパースすることができる。
falseを指定、もしくは省略するとJavaScriptでJSONパースエラーが起こってしまう。
どうやらtrue,falseの違いは、「<>」記号をエンコードするか、しないか、であるらしい。

php
	<?php 
		$data2 = array('cat'=>'大猫','dog'=>'big_doc<input />','iguana'=>"big¥niguana");
		$json2 = json_encode($data2,true);
		echo "<div id='json2'>{$json2}</div>";
	?>
	
JavaScript
		var json1 = $('#json2').html();
		var data1 = JSON.parse(json2);
	
検証

JavaScriptのパースについて

	var data=$.parseJSON(json_str);//JSONパース(jQuery版)
	var data = JSON.parse(json_str);//JSONパース(JSONデコード)
	var json_str = JSON.stringify(data);//JSONエンコード
	


DBにjson文字列を保存するときの注意点

json文字列をDB保存する場合、addslashesでサニタイズしてからDB保存をすること。 そうしないと別の処理でDBからjson文字列を読み出し、そのjson文字列をパース(デコード)する際、失敗することがある。 json文字列中の値に「/」が入っているとエラーが起こるようだ。 「/」はURL文字列などでよく使われるので注意せねばならない。
	$json_str = json_encode($data, JSON_HEX_TAG | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_HEX_APOS);
	$json_str = addslashes($json_str); // SQLインジェクション対策のサニタイズ。これをやらないと「/」を含む文字列をデコードできなくなる。
	// ⇒ 略  $json_strをDBに保存
	
	// ~ 略 ~
	
	// ⇒ 略 $json_strをDBから取得
	$data = json_decode($json_str, true);//JSONデコード
	

JSONデコードに失敗する

JSONデコード(パース)に失敗する原因の一つに、JSON文字列に「&quot;」が混じっているというのがある。 この場合、単純に置換してやればよい。
	$data = json_decode(str_replace('&quot;','"',$json_str), true);
	

JSONデコードのエラーの原因を調べる

「json_last_error_msg()」関数で最後に実行したJSONデコード失敗のエラーメッセージを出力できる。
var_dump(json_last_error_msg());

下記のサイトでJSONデコードに失敗する原因を詳しく調べることができる。JSONデコードに失敗するJSON文字列を入力して使用する。
JSON Pretty Linter Ver3


テキストファイルから文字列を読み取る

テキストファイルの内容を取得するサンプル

	
		$fn="test.txt";
		$str=load($fn);
		echo $str;
	
		/**
		 * テキストファイル内の文字列を取得
		 *
		 * @param $txtFn テキストファイル名
		 * @return テキストファイル内の文字列(改行は\n)
		 */
		function load($fn) {
		
			// 引数のiniファイル名が空、もしくは存在しなければ、なら、nullを返して終了
			if (! $fn) {
				return null;
			}
		
			$str = null;
			$fn=mb_convert_encoding($fn,'SJIS','UTF-8');
			if (!is_file($fn)){
				return null;
			}
		
			if ($fp = fopen ( $fn, "r" )) {
				$data = array ();
				while ( false !== ($line = fgets ( $fp )) ) {
					$str .= mb_convert_encoding ( $line, 'utf-8', 'utf-8,sjis,euc_jp,jis' );
				}
			}
			fclose ( $fp );
		
			return $str;
		}
	
	

出力

	2014-07-22 11:20:58
	いろはにほへとちりぬのを
	わかよたれそつねならむ
	うゐのおくやま けふこえて
	あさきゆめみし ゑひもせす
	

文字列をテキストファイルに書き出す

文字列をテキストファイルに書き出すサンプル。

書き出し先にあらかじめテキストファイルを作成する必要はない。
テキストファイルが存在しないなら新規作成し、存在しないなら上書きする。
上書きする場合、テキストファイルの内容を一旦消去してから、新たに書き出す。

複数行の文字列を書きだす場合、改行コードには「\r\n」を推奨する。
文字コードはPHP環境に依存している。utf8を設定しているなら、テキストファイルの文字もutf8である。

ソースコード


	/**
	 * 文字列テキストファイルに書き出す
	 *
	 * @param $txtFn テキストファイル名
	 * @param $str 文字列
	 */
	function writeTextFile($txtFn, $str) {
	
		// ファイルを追記モードで開く
		$fp = fopen ( $txtFn, 'ab' );
	
		// ファイルを排他ロックする
		flock ( $fp, LOCK_EX );
	
		// ファイルの中身を空にする
		ftruncate ( $fp, 0 );
	
		// データをファイルに書き込む
		fwrite ( $fp, $str );
	
		// ファイルを閉じる
		fclose ( $fp );
	}
	


ファイルのソースコードを取得する

PHPファイルのソースコードを文字列として取得することができる。
フルパス(Windows環境のパス)を指定しているため、システム稼働中のPHPファイルでも取得可能である。

ソースコード


	// 対象ファイルのフルパスを作成
	define('DS', DIRECTORY_SEPARATOR);
	$fp = dirname(__FILE__).DS.'sample'.DS.'NekoController.php';
	
	// 対象ファイルのソースコードを取得する
	$text = load($fp);
	echo $text;
	
	
	function load($fn) {
	
		// 引数のiniファイル名が空、もしくは存在しなければ、なら、nullを返して終了
		if (! $fn) {
			return null;
		}
	
		$str = null;
		$fn=mb_convert_encoding($fn,'SJIS','UTF-8');
		if (!is_file($fn)){
			return null;
		}
	
		if ($fp = fopen ( $fn, "r" )) {
			$data = array ();
			while ( false !== ($line = fgets ( $fp )) ) {
				$str .= mb_convert_encoding ( $line, 'utf-8', 'utf-8,sjis,euc_jp,jis' );
			}
		}
		fclose ( $fp );
	
		return $str;
	}
	
	


テキストファイルに書き出すサンプル

	$fn="test.txt";
	$d=date("Y-m-d H:i:s");
	$str=$d."\nいろはにほへとちりぬのを\nわかよたれそつねならむ\nうゐのおくやま けふこえて\nあさきゆめみし ゑひもせす\n";
	save($fn,$str);//★


	/**
	 * テキストファイルに書き出して保存
	 *
	 * @param $txtFn テキストファイル名
	 * @param $str 文字列
	 * @return なし
	 */
	function save($txtFn, $str) {

		// ファイルを追記モードで開く
		$fp = fopen ( $txtFn, 'ab' );

		// ファイルを排他ロックする
		flock ( $fp, LOCK_EX );

		// ファイルの中身を空にする
		ftruncate ( $fp, 0 );

		// データをファイルに書き込む
		fwrite ( $fp, $str );

		// ファイルを閉じる
		fclose ( $fp );
	}


文字列を指定文字で分割(split,preg_split,explode)

正規表現で文字を分割する場合は、preg_split関数を使い、 ただの文字で分割する場合は、より高速なexplode関数を使う。
普段はexplode関数を使うことが多いと思われる。
ちなみに、splitはPHP5.3以降は非推奨となっている。

■explode
配列=explode ( 分割文字 , 対象文字 ,分割数 );
※分割数は省略可。
	$ary=explode(",","猫,犬,たぬき");
	
splitについての公式サイト

空判定について

空値の種類emptyissetis_null == ""== null== false== 0 === ""=== null=== false=== 0
""11011111000
null10111110100
011011110001
0.011011110000
011011110010
array()11001100000
未宣言10111110100
※未宣言の変数はemptyとisset以外だと警告が表示される。

配列から重複を削除

array_uniqueを使うと配列の重複値を簡単に削除できる。
	$ary=array_unique($ary);
	

配列のソート

PHPの配列ソートはいくつか種類があるば、よく使うと思われるものを以下に示す。

sort昇順ソートキーは無視(再度、0,1,2...のように割り振られる)
srsort降順ソートキーは無視
sasort昇順ソートキーも維持する。
sarsort降順ソートキーも維持する。


使用例
	sort($ary);
	
他にもソート関連の関数は存在する。
参照URL

2次元配列のソート

array_multisort関数は多次元配列によるソートを可能とする。
	$data=array(
		array(
			'id'=>3,
			'name'=>'オオヒラタクワガタ',
			'kind'=>'クワガタ',
			'date'=>'2012/12/12',
		),
		array(
				'id'=>2,
				'name'=>'リュウキュウカブト',
				'kind'=>'カブト',
				'date'=>'2012/12/15',
		),
		array(
				'id'=>1,
				'name'=>'タイワンカブト',
				'kind'=>'カブト',
				'date'=>'2012/12/2',
		),
		array(
				'id'=>5,
				'name'=>'ノコギリクワガタ',
				'kind'=>'クワガタ',
				'date'=>'2012/12/3',
		),
		array(
				'id'=>6,
				'name'=>'アカアシクワガタ',
				'kind'=>'クワガタ',
				'date'=>'2012/12/22',
		),
	);
	
ソート前のデータ
idnamekinddate
3オオヒラタクワガタクワガタ2012/12/12
2リュウキュウカブトカブト2012/12/15
1タイワンカブトカブト2012/12/2
5ノコギリクワガタクワガタ2012/12/3
6アカアシクワガタクワガタ2012/12/22

	//IDで昇順ソート
	$ids=array();
	foreach($data as $key=> $ent){
		$ids[$key]=$ent['id'];
	}
 	array_multisort($ids,SORT_ASC,$data);
	
idnamekinddate
1タイワンカブトカブト2012/12/2
2リュウキュウカブトカブト2012/12/15
3オオヒラタクワガタクワガタ2012/12/12
5ノコギリクワガタクワガタ2012/12/3
6アカアシクワガタクワガタ2012/12/22

	//kindで降順ソート且つ、nameで昇順ソート
	$kinds=array();
	$dates=array();
	foreach($data as $key=> $ent){
		$kinds[$key]=$ent['kind'];
		$names[$key]=$ent['name'];
	}
 	array_multisort($kinds,SORT_DESC,$names,SORT_ASC,$data);
	
idnamekinddate
6アカアシクワガタクワガタ2012/12/22
3オオヒラタクワガタクワガタ2012/12/12
5ノコギリクワガタクワガタ2012/12/3
1タイワンカブトカブト2012/12/2
2リュウキュウカブトカブト2012/12/15

参考サイト サンプル

2次元配列のソート:特定のフィールドでデータを並べ替える関数

sortData関数は、フィールド名と並び向きを指定して、データを並べ替える関数である。

ソースコード

	$data = [
		['id'=>0,'animal_name'=>'ネコ'],
		['id'=>1,'animal_name'=>'ヤギ'],
		['id'=>2,'animal_name'=>'カニ'],
		['id'=>3,'animal_name'=>'サメ'],
	];
	
	$data = sortData($data,'animal_name',0);
	var_dump($data);
	
	/**
	 * 特定のフィールドでデータを並べ替える
	 * @param array $data データ(2次元配列)
	 * @param strong $sortField 並べ替えフィールド名
	 * @param int $orderFlg 0:昇順  , 1:降順
	 */
	function sortData($data,$sortField,$orderFlg){
		$sfList=array();// ソートフィールドリスト
		foreach($data as $key=> $ent){
			$sfList[$key]=$ent[$sortField];
		}
	
		$sortFlg = SORT_ASC;
		if(!empty($orderFlg)){
			$sortFlg = SORT_DESC;
		}
	
		array_multisort($sfList,$sortFlg,$data);
	
		return $data;
	}
	

出力

	array (size=4)
	  0 => 
	    array (size=2)
	      'id' => int 2
	      'animal_name' => string 'カニ' (length=6)
	  1 => 
	    array (size=2)
	      'id' => int 3
	      'animal_name' => string 'サメ' (length=6)
	  2 => 
	    array (size=2)
	      'id' => int 0
	      'animal_name' => string 'ネコ' (length=6)
	  3 => 
	    array (size=2)
	      'id' => int 1
	      'animal_name' => string 'ヤギ' (length=6)
	

0,'animal_name'=>'ネコ'], // ['id'=>1,'animal_name'=>'ヤギ'], // ['id'=>2,'animal_name'=>'カニ'], // ['id'=>3,'animal_name'=>'サメ'], // ]; // $data = sortData($data,'animal_name',0); // var_dump($data); // /** // * 特定のフィールドでデータを並べ替える // * @param array $data データ(2次元配列) // * @param strong $sortField 並べ替えフィールド名 // * @param int $orderFlg 0:昇順 , 1:降順 // */ // function sortData($data,$sortField,$orderFlg){ // $sfList=array();// ソートフィールドリスト // foreach($data as $key=> $ent){ // $sfList[$key]=$ent[$sortField]; // } // $sortFlg = SORT_ASC; // if(!empty($orderFlg)){ // $sortFlg = SORT_DESC; // } // array_multisort($sfList,$sortFlg,$data); // return $data; // } ?>

多次元配列のマージ


他のマージ関数について
関数 説明
array_merge() キーが文字列であるなら上書きするが、キーが数値であるなら追加になる。
$ary1=array_merge($ary1,$ary2);
// ※$ary1に$ary2を上書き
array_merge_recursive() 上書きでなく追加である。同じキーの値は配列にしてしまう。
Hash::merge() キーが文字列、数値にかかわらず完全な上書き。
Cakeの環境があるなら「Hash::merge」が一番良い。完全な上書きであるため。
$ary1=Hash::merge($ary1,$ary2);
参考サイト

日付フォーマット変換

サンプルコード

	$d='2012/2/29';

	//日付フォーマット変換
	$d2=date('Y-m-d',strtotime($d));

	//出力→ 2012-02-29
	
サンプル

改行コードを<br>タグに変換 nl2br()

\n,\r,\n\rなどの改行コードを<br>タグに置換します。
	//変換前
	$str="いろはにほへとちりぬのを\nわかよたれそつねならむ\rうゐのおくやま けふこえて\n\rあさきゆめみしゑひもせす";

	//変換後
	$str2=nl2br($str);

	
サンプル

時刻フォーマット変換

時刻フォーマットは日付フォーマットと同様な方法でできる。
サンプルコード

	$t='4:20:00';

	//日付フォーマット変換
	$t2=date('H:i',strtotime($t));
	echo $t2;

	//出力→ 04:20
	

配列の先頭と最後を取得する

配列から最初の要素を取得する場合、reset()関数を使う。
最後の要素を取得する場合はend()関数を使う。


最初の要素を取得する場合。
$v=reset($ary);
※$v=「$ary[0];」と同等の意味合いを持つ。
ドキュメント



最後の要素を取得する場合
$v=end($ary)
※参照渡しである
ドキュメント

小数点の四捨五入、切上げ、切捨て

関数名 説明 使用例 ドキュメント
round 四捨五入する。オプションで桁指定もできる。 $a=round(3.14);
//$a=3
ドキュメント
ceil 小数点切り上げ $a=ceil(3.14);
//$a=4
ドキュメント
floor 小数点切り捨て $a=floor(3.14);
//$a=3
ドキュメント
※返り値の型はいずれもfloat型である