PHP UUIDをバイナリと文字列の間で相互に変換する

PHP

PHPでUUIDをバイナリと文字列表記で相互に変換する方法です。
UUIDの文字列表記の形式は下記例のようになります。

3c369d68-b161-4b38-9652-a61fc2a057db

 

UUID 文字列からバイナリに変換します

 $binary =  pack("h*", str_replace('-', '', $string));

UUIDバイナリから文字列表記に変換します

 $string = unpack("h*", $binary);
 $string = preg_replace("/([0-9a-f]{8})([0-9a-f]{4})([0-9a-f]{4})([0-9a-f]{4})([0-9a-f]{12})/", "$1-$2-$3-$4-$5", $stringi[1]);

PHP Unixタイムスタンプを計算する

PHP

PHP Unixタイムスタンプを計算する

PHPでUnixタイムスタンプを計算するには、

 mktime();

という関数を利用します。

引数は全部整数で、

 mktime (時間, 分 , 秒, 月, 日, 年);

です。

この順番を、間違えやすいんですよね~。
最後は、月・日・年の順番です!
間違えないように~

 例)200年7月1日のタイムスタンプを取得
 mktime(0, 0, 0, 7, 1, 2000));

PHP XDebug Unexpected termination

PHP
Eclipse

Windows7 64bit環境 PHP Xdebugでデバッグしていると、Unexpected termination of script,

debugging ended” error message. というメッセージが表示されて、デバッグができない

Windows7 64bit
XAMPP

Windows7 64bit環境でEclipseとXDebugを使ってデバッグしていると、

 Unexpected termination of script,debugging ended

と表示されて、デバッグが途中で終わってしまうことがあります。

上記のエラーメッセージで検索すると、ウォッチ式を空にするように、という話がHitしますが、ウォッチ式を空にしても治りません。

それは、64bit用のDLLをダウンロードしていないからかもしれません。

参考:Re: xdebug for PHP 5.3.x VC6 and x64?
http://www.xdebug.org/archives/xdebug-general/1773.html

下記のXDebug公式ページから、最新の64bit用のものをダウンロードして利用しましょう。
http://www.xdebug.org/download.php

*variableを閲覧すると、Unexpected termination of scriptが起きてしまう

これも悩ましい問題です。
variablesビューを開いていると、Unexpected termination of scriptが即座に起こる。
あるいは、デバッグの途中でvariablesビューを開くと止まってしまう。

世界には、この問題で悩んでいる人がいっぱいいるみたいです。
http://www.agilepman.com/2010/08/unexpected-termination-of-script-debugging-ended/

上記のブログで、解決方法が発見?されたようです!
XDebugの設定で、Show super globals in variable view にチェックが入っていたら外してみましょう。

Window->Preferences->PHP->Debug->Installed Debuggers->XDebug
に設定項目があります。

ありがとう!Kevinさん!!本当に助かりました。[smile]

これは検証したわけではなく、私の個人的な環境での話ですが、どうやらApacheをサービスとして走らせていると、こうなってしまうようです。
サービスとしてApacheを走らせるのを止めてみましょう。
しかし、サービスとしてApacheを走らせていないと、Windows7 Xampp Apacheが起動しないにあるようにApacheが立ち上がらなくなるという問題もあるので、悩ましいところです。

PHP compact

PHP

compactという関数が、オフィシャルのPHPマニュアルだとちょっとわかりにくかったので、書いておきます。

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

 例1 compact() の例
 <?php
 $city  = "San Francisco";
 $state = "CA";
 $event = "SIGGRAPH";
 
 $location_vars = array("city", "state");
 
 $result = compact("event", "nothing_here", $location_vars);
 print_r($result);
 ?>

上の例の出力は以下となります。

 Array
 (
    [event] => SIGGRAPH
    [city] => San Francisco
    [state] => CA
 )

$A=B、$C=Dのような変数の組み合わせがあれば、それを配列にしてくれる、ということです。

PHP jsonで送られてきたデータをphpの配列として認識させる方法

PHP

PHP jsonで送られてきたデータをphpの配列として認識させる方法

APIを利用時、JSONで送られてきたデータをPHPで解釈できるようにする方法がわからなかったので、メモしておきます!

 //jsonデータの取得
 $json_data = file_get_contents( jsonデータ );
 
 //jsonデータからphpの配列に変換
 $php_data = json_decode( $json_data, true );