Hatena::ブログ(Diary)

揮発性のメモ このページをアンテナに追加 Twitter

2016/05/25 (水)

文字コードの変換

PHP: mb_convert_variables - Manual

<?

/**
 * 文字列変数をUTF-8からSJISに変換する
 * @param  string $str
 * @return string
 */
function en( $str )
{
    return mb_convert_encoding( $str, "UTF-8", "SJIS" );
}


/**
 * いろんな変数をUTF-8からSJISに変換する
 * @param  mixed $vars
 * @return mixed
 */
function en2( $vars )
{
    mb_convert_variables( "UTF-8", "SJIS", $vars );
    return $vars;
}

mb_convert_variables()なら一発でなんでもかんでも変換できる

配列だったらぐるぐる回ってー とかやってたのがアホっぽい


FuelPHPで、入出力のフィルタを使って 自動的文字コード変換をするときなどは、入力配列がくることが多々あるので 中で mb_convert_variables() を使うようにした方が簡単

2016/05/24 (火)

先週の日付を取得する

MySQL :: MySQL 5.6 リファレンスマニュアル :: 12.7 日付および時間関数

SELECT DATE_SUB(NOW(), INTERVAL 7 DAY);
-- 2016-05-17 21:11:47

SELECT SUBDATE(NOW(), 7);
-- 2016-05-17 21:11:47

SELECT DATE_FORMAT(SUBDATE(NOW(), 7), "%Y%m%d%H%i%s");
-- 20160517211147

2016/05/19 (木)

今日のエラー

<?
$haystack[] = array("abc","def");
$needle = "abc";

if( in_array($needle, $haystack) ) echo "見つけた";

これで1時間潰した

2016/05/13 (金)

μ秒をとる

PHP: microtime - Manual

<?
$now = microtime(true);
echo $now ."\n";
echo substr($now."0000000",11,6);
1463148909.8785
878500

2001年9月9日より前の日付は知らぬ

2016/05/10 (火)

2016/05/08 (日)

可変長引数のコメントの書き方

これであっているか不明

PHP5.6より前

phpDocumentorでドキュメントの自動生成

@param

<?
    /**
     * 可変長の関数
     * @param   string   $s      可変長じゃない変数. フォーマット文字列など
     * @param   string   $v,...  可変長の変数. 引数全体から可変長じゃないのを読み捨てた分
     */
    function kahen_cho( $s, $v )
    {
        /** 可変長の変数の配列 */
        $vlist = func_get_args();
        array_shift( $vlist );

        $result = "$s:" . implode(",",$vlist);
        return $result;
    }

    print( kahen_cho("hoge","a","b","c") ."\n" );
    // hoge:a,b,c
  • $vは使ってないけどいいのか
  • 可変長引数の個数がゼロのとき、IDEに「引数の数があっていない」と怒られる

PHP5.6以降

<?
    /**
     * 可変長の関数
     * @param   string   $s      可変長じゃない変数. フォーマット文字列など
     * @param   string[] $vlist  可変長引数. 関数内では配列に見える
     */
    function kahen_cho( $s, ...$vlist )
    {
        $result = "$s:" . implode(",",$vlist);
        return $result;
    }

    print( kahen_cho("hoge","a","b","c") ."\n" );
    // hoge:a,b,c
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |