タグ

2009年5月17日のブックマーク (5件)

  • PHPの==がキモい件 - hnwの日記

    どうやら僕はround()の人なんだそうです(参考資料)。それはそうとして、もう少し前までは==の人だった気がしますので、その頃の話題を再掲します。 僕は2年ほど前に「==がキモい件」などのタイトルで勉強会で発表していた頃がありました。PHPの==演算子の挙動について、啓蒙が必要だろうと考えていたためです。当時に比べれば最近はPHPの==演算子の不思議な挙動に関する記事を見る気がしますが、まだまだキモさの全容を把握している人は少ないような気もします。 PHPの==演算子の何がキモいのか、一言で言うと両辺の値の型をテキトーに合わせて比較する点です。言い換えると、「型はさておき、等しい値を意味しているようならtrue」という演算子です。 マニュアルの「PHP 型の比較表」の「==による緩やかな比較」を見てもキモさがチラホラ見えるんですが、今回は更に突っ込んだ比較表を作ってみました。 まずは以前

    PHPの==がキモい件 - hnwの日記
    bigbro
    bigbro 2009/05/17
  • PHPのsort関数は相当おかしい - hnwの日記

    追記(2009/02/28 15:35):ソートする配列の要素が数値または数値形式の文字列のみの場合は、<、==、>が推移律を満たすので、この記事のような矛盾は起こりません。念のため。 オヤジギャグがこらえられなくなったら立派なオヤジだと思います。それはさておき、今日はPHPのsort関数が不思議な挙動をする例を紹介します。 sort関数の紹介 sort ― 配列をソートする 説明 bool sort ( array &$array [, int $sort_flags= SORT_REGULAR ] ) この関数は配列をソートします。この関数が正常に終了すると、 各要素は低位から高位へ並べ替えられます。 PHP: sort - Manual マニュアルをみる限り普通のソート関数です。省略可能な2番目の引数の意味は次の通りです。 sort_flags オプションの 2 番目のパラメータ s

    PHPのsort関数は相当おかしい - hnwの日記
    bigbro
    bigbro 2009/05/17
  • PHP 配列を回すならforかforeachか

    今日、社内で「PHPの配列をループで回すのにforを使うか、foreachを使うか」という話が面白かったので、メモ。 ここでいう配列はキーが数字で、0からの連番であることを想定してます。(キーが数字以外や連番で無い場合は、foreachを使います。) 例えば↓のようにDBテーブルからレコードを読み込んだ内容が入ってる場合、$listをループで回すならforとforeachのどちらを使うべきかという話です。 <?php $list = array(); $list&#91;&#93; = array('id' => 1, 'name' => 'hoge'); $list[] = array('id' => 2, 'name' => 'foo'); $list[] = array('id' => 3, 'name' => 'bar'); ?> for文派 <?php for ($i = 0 ;

    bigbro
    bigbro 2009/05/17
  • PHP コード最適化 Best Practices 63+ - カタコト日記

    みたいなタイトルの記事を Digg 経由で発見。チートシート代わりにと思い超訳。*1 A Software Architect PHP 最適化 ベストプラクティス! 01. static にできるメソッドは static として宣言しよう。(4倍速い) 02. echo の方が print より速い。 03. echo '文','字'; (カンマ区切り)の方が、'文'.'字' (ドット連結)より速い。 04. ループの最大値は、ループ「内」ではなく「前」にセットしておこう。 05. 大きい配列のような変数は unset() してメモリを解放しよう。 06. マジックメソッド(例: __get, __set, __autoload)は使用を避けよう。 07. require_once はハイコストなのです。 08. include や require でファイルはフルパスで指定しよう。 09

    PHP コード最適化 Best Practices 63+ - カタコト日記
  • 軽量プログラミング言語 - Wikipedia

    軽量プログラミング言語(英: lightweight language)は、2001年にMITで開催されたワークショップ「LL1: Lightweight Languages Workshop」のCFPによれば[1]、何らかの実際の機能によるカテゴライズではなく、習得・学習・使用が容易なプログラミング言語を指し、当時におけるそのような言語としてPerlPythonRuby・Scheme・Curlを例として挙げている。 「LL」という語が初めて使われたのは「LL1: 軽量言語ワークショップ」[2]である。「LL1: 軽量言語ワークショップ」は、米国MITで開催される革新的なプログラミング言語について語り合うイベントであるが、2001年「スクリプト言語」でも「動的型付け」でも外れてしまう言語を対象に包含する概念として「Lightweight Language」とい う言葉が作られた。翌年の