配列判定 | is_array

	if (is_array($hoge)) {
		echo "配列である";
	} else {
		echo "配列でない";
	}
	


複数の区切りで文字列を分割

	$str ="ネコ,ヤギ-カニあサメ.ワシ";
	$ary = preg_split("/,|-|あ|\./",$str);
	var_dump($ary)
	

出力
	array (size=5)
	  0 => string 'ネコ' 
	  1 => string 'ヤギ' 
	  2 => string 'カニ' 
	  3 => string 'サメ' 
	  4 => string 'ワシ' 
	


先頭の一文字を取得する

	$str="いろは";
	$s = mb_substr($str ,0 ,1);
	echo $s;
	

出力


先頭の一文字をカットする

	$str="いろは";
	$str = mb_substr($str ,1);
	echo $str;
	
出力
	ろは
	


分数表記を浮動小数点式に変換する

fracToFloat関数は、「 314/1000」、「-1732/1000」のような分数表記の文字列を浮動小数値に変換する。

fracToFloat関数
	/**
	 * 分数表記を浮動小数点式に変換する
	 * @param string $str 分数表記の文字列 (例: 314/100)
	 * @return number 浮動小数値
	 */
	function fracToFloat($str){
		
		// 「/」が文字列中に存在しなかったり、空であったりするなら、引数を返して処理を抜ける
		if(!preg_match("/\//", $str) || empty($str)){
			return $str;
		}
		
		// 「/」で分割して配列を作り、チェックと数値加工を施す。
		$ary=explode("/",$str);
		foreach($ary as $i => $v){
			$v = floatval ($v);
			if(is_numeric($v)){
				$ary[$i] = $v;
			}else{
				return $str;
			}
		}
		
		// 分母が0でないなら除算をする。
		if($ary[1]==0){
			return $str;
		}
		$v = $ary[0] / $ary[1];
		
		return $v;

	}
	




Exifを取得

Jpeg画像からExifデータは抜き出すにはexif_read_data関数を使う。
$exifData = exif_read_data('img/test4.jpg');


サンプル


文字列から日付の部分を別の日付に置換

replaceDate関数は対象文字列の日付部分を検索して、別の文字に置き換えることができます。

	/**
	 * 文字列から日付の部分を別の日付に置換
	 * @param string | date $replace_date
	 * @param string $str 対象文字列
	 * @return string 置換後の文字列
	 */
	function replaceDate($replace_date,$subject){
		$re = '/([0-9]{4})(\/|-|年)([0-9]{1,2})(\/|-|月)([0-9]{1,2})/';
		$res = preg_replace($re, $replace_date, $subject);
		
		return $res;
	}
	




array_splice | 配列要素の挿入、変更、削除

array_splice関数の第2引数は位置を示している。
第3引数は、削除する個数である。
第4引数は、新規挿入する値である。
これらの組み合わせで、挿入、変更、削除を実現している。

要素1から2行だけ除去する

	$ary = [10,20,30,40];
	var_dump($ary);
	array_splice($ary,1,2);
	var_dump($ary);
	
	array (size=4)
	  0 => int 10
	  1 => int 20
	  2 => int 30
	  3 => int 40
	
	array (size=2)
	  0 => int 10
	  1 => int 40
	

要素2に1000を挿入

	$ary = [10,20,30,40];
	var_dump($ary);
	array_splice($ary,2,0,1000);
	var_dump($ary);
	
	array (size=4)
	  0 => int 10
	  1 => int 20
	  2 => int 30
	  3 => int 40
	
	array (size=5)
	  0 => int 10
	  1 => int 20
	  2 => int 1000
	  3 => int 30
	  4 => int 40
	

要素2に「abc」に置き換え(変更)

	$ary = [10,20,30,40];
	var_dump($ary);
	array_splice($ary,2,2,'abc');
	var_dump($ary);
	
	array (size=4)
	  0 => int 10
	  1 => int 20
	  2 => int 30
	  3 => int 40
	
	array (size=4)
	  0 => int 10
	  1 => int 20
	  2 => string 'abc' (length=3)
	  3 => int 40
	

要素2以降を除去する

	$ary = [10,20,30,40];
	var_dump($ary);
	array_splice($ary,2);
	var_dump($ary);
	
	array (size=4)
	  0 => int 10
	  1 => int 20
	  2 => int 30
	  3 => int 40
	
	array (size=2)
	  0 => int 10
	  1 => int 20
	


PHPのコールバック

関数を引数として渡す方法

	$str = "ネコ";
	$funcA = function($str){ echo "Hello " . $str; };
	test1( $str, $funcA );
	
	function test1( $str, $callback ) {
		echo 'Test1<br>';
		$callback($str);
	}
	

出力
	Test1
	Hello ネコ
	


JavaScriptでよく見かけるコールバック関数の記述方法

	$str = "ヤギ";
	test2( $str, function($str){ 
			echo "Hello " . $str; } 
	);
	
	function test2( $str, $callback ) {
		echo 'Test2<br>';
		$callback($str);
	}
	

出力
	Test2
	Hello ヤギ
	



PHPのコールバック | 関数名を文字列として指定する

コールバック関数を関数名で指定する方法

	$str = "カニ";
	test3( $str, 'hello_print' );
	
	function test3( $str, $callback ) {
		return call_user_func( $callback, $str );
	}
	
	function hello_print($str) {
		echo "Hello " . $str;
	}
	

出力
	Hello ヤギ
	


クラスのメソッドを文字列で指定する方法

	$str = "サメ";
	$obj4 = new Class4();
	test4( $str, array( $obj4,'hello_print4'));
	
	function test4( $str, $callback ) {
		return call_user_func( $callback, $str );
	}
	
	class Class4{
		public function hello_print4($str){
			echo "Hello " . $str;
		}
	}
	

出力
	Hello サメ