タグ

PHPとarrayに関するbasiのブックマーク (3)

  • sort関数と全順序集合 - hnwの日記

    大仰なタイトルですが、約1年前の記事「PHPのsort関数は相当おかしい」の補足記事です。僕が何を根拠にPHPのsort関数(の第二引数のデフォルト値)がおかしいと思ったかを説明します。一言でいうと、PHPの全ての値とSORT_REGULAR(言い換えるとPHPの<、==、>)の組み合わせが全順序集合になっていないからです。 前回の記事の概要 PHPのsort関数は第二引数で比較演算子を変更できますが、省略するとSORT_REGULARを用います。これはPHPの通常の比較演算子と同じ挙動で、両辺の値が数字っぽい場合は数値として、そうでなければ文字列として比較するものです。このような比較を用いると、ソートが不可解な挙動を示すことがあります。 $ php -r '$a=array("0xa","011","01a","2.0");sort($a);print_r($a);sort($a);pr

    sort関数と全順序集合 - hnwの日記
    basi
    basi 2010/02/20
  • SplFixedArrayはPHP標準の配列よりメモリを消費しない - hnwの日記

    PHP5.3.0から実装されたSplFixedArrayというSPLクラスがあります。これはマニュアルによれば下記のようなクラスです。 SplFixedArray クラスは配列の主要な機能を提供します。 SplFixedArray と通常の PHPの配列との主な違いは、 SplFixedArray は固定長であって、整数値で指定した範囲内の添字しか使用できないところです。これにより、より高速な配列の実装が可能となりました。 http://docs.php.net/manual/ja/class.splfixedarray.php 制限はあるけれども高速な配列もどきのクラスだと紹介してありますね。このクラスについて少し調べてみました。 SplFixedArrayの速度 まずはSplFixedArrayが当に速いのかどうか、下記のようなプログラムで実験してみました。実験はPHP5.3.0で行

    SplFixedArrayはPHP標準の配列よりメモリを消費しない - hnwの日記
  • ブーヤーの技術開発メモ » Blog Archive » array_fill_keys キーを指定して、配列を値で埋める

    array array_fill_keys ( array $keys , mixed $value ) この関数は、初期化の際に結構便利かなぁと思います たとえば、 $key_list = array('a','b','c','d'); というような配列があって、 $array = array( 'a' => array(), 'b' => array(), 'c' => array(), 'd' => array(), ) このように初期化したいときは $array = array(); foreach ($key_list as $key){ $array[$key] = array(); } のようにすると思うんですが、array_fill_keysを使うと $array = array_fill_keys($key_list,array()); でできちゃいます。 大幅にコードを

    basi
    basi 2010/02/19
  • 1