使えそうなPHPのユーザー定義関数いろいろ
- January 16th, 2014
今後使いそうな、PHPのユーザー定義関数をメモ。
NULL値と空文字の判定
NULLと空文字の場合のみtrueを返す関数。
// 1:文字列 function isNullEmpty($str) { if ($str) return false; $result = true; if ($str === 0 || $str === '0') $result = false; return $result; }
文字列を配列に分割する(マルチバイト対応)
転載元:マルチバイト文字列を1文字ずつ配列に格納|適当に語ってみるテスツ
// 1:文字列, 2:文字コード function mbStringToArray($sStr, $sEnc = 'UTF-8') { $aRes = array(); while ($iLen = mb_strlen($sStr, $sEnc)) { array_push($aRes, mb_substr($sStr, 0, 1, $sEnc)); $sStr = mb_substr($sStr, 1, $iLen, $sEnc); } return $aRes; }
既存の日付かどうかをチャックする
「2014-02-31」のような存在しない日付が指定された場合、その月の最終日を返す関数。
// 1:日付(YYYY-MM-DD) function getExistDate($date = null) { if (!$date) return null; $result = null; $date_time = strtotime($date); if ($date == date('Y-m-d', $date_time)) { $result = $date; } else { $result = date('Y-m-t', strtotime('-1month', $date_time)); } return $result; }
移動距離の度数を取得
指定された座標からの移動距離を度数にして返す関数。
参考:なんとなく始めてみた、プログラマー雑記 » データベース内の緯度・経度を利用して半径500m以内を検索する方法
// 1:緯度, 2:経度, 3:距離(メートル) function getGeoMoveDistance($lat = 0, $lng = 0, $move = 100) { $earth_radius = 6356752.314; // 地球極半径 $onedegree_second = 360 * 60 * 60; // 1秒 $onesecond_degree = 1 / 60 / 60; // 1秒あたりの度数 $lat_circle = $earth_radius * 2 * M_PI; // 円周(緯度) $lng_circle = $earth_radius * cos($lat / 180 * M_PI) * (2 * M_PI); // 円周(経度) return array( 'latitude'=>$onesecond_degree * ($move / ($lat_circle / $onedegree_second)), 'longitude'=>$onesecond_degree * ($move / ($lng_circle / $onedegree_second)), ); }
- January 16th, 2014