tech

配列の順次処理

「5.7配列の順次処理」からのメモ。 foreachによるイテレータ $v) { $v = "hgoe_$v"; } print_r($hoge); ?> Array ( [0] => a [1] => b [2] => c ) foreachによるイテレータで参照変数を使って配列の値を操作する &$v) { $v = "hgoe_$v"; } prin…

配列のソート

「5.8配列のソート」からのメモ。 値を使ったソート インデックスの張り直しをするので普通の配列に使う Array ( [0] => 8 [1] => 9 [2] => 10 ) 値を使ったソート インデックスの張り直しをしないので連想配列で使う 10 , "carol" => 8 , "alice" => 9); …

多次元配列の展開

「5.5多次元配列の展開」からのメモ。 list()を使って配列を通常の変数に展開 list()は関数じゃなくて、PHPの構文です。 $second = b array_key_exists()とisset()の違い 配列中にあるキーが存在するかどうかはarray_key_exists()で見るべき。isset()だと値…

配列と変数の変換

「5.6配列と変数の変換」からのメモ。 extract()を使って連想配列をキーを変数名として展開する "a" , "second" => "b" , "third" => "c"); extract($hoge , EXTR_PREFIX_ALL , "hoge"); echo "\$hoge_first = $hoge_first\n"; echo "\$hoge_second = $hoge…

PHPの比較演算

「4.6.1完全一致」からのメモ。 PHPには==と===という同一の値かどうかをチェックする比較演算子があります。それぞれの違いは値の型まで含めた比較を行うかどうかです。 ==は型変換を行い比較を行う ===は型変換を行わず比較を行う ==では型変換を行うとき…

配列へのデータ格納

「5.3配列へのデータの格納」からのメモ。 キーを指定しないと、自動で連番がふられる "aaa" , "bbb" , "ccc"); print_r($hoge); ?> Array ( [10] => aaa [11] => bbb [12] => ccc ) 要素の追加は$array[]で可能 aaa [1] => bbb [2] => ccc ) 連想配列に追…

PHPの文字列中の文字へのアクセス

「4.3個別の文字へのアクセス」からのメモ。 文字列中の各文字にアクセスするには[]と{}を使う方法があります。どちらも同じ動作になります。 $hoge[2] = l $hoge{2} = l しかし{}を使う方法はPHP5.3.0から非推奨になったようなので、[]を使う方をお勧めし…

PHPのHTMLエスケープ

「4.5.1HTML」からのメモ。 PHPにはHTML中の文字をエスケープするための関数がいくつかあります。 htmlentities() 空白文字を除くをエンティティに変換します。 ('はENT_QUOTESを指定した場合のみ) & \" ' Ä" , ENT_COMPAT , "UTF-8"); echo "$hoge\n"; #…

PHPのURLエンコード

「4.5.2URL」からのメモ。 URLをエンコードするにはrawurlencodeとurlencodeがあります。それぞれの違いはスペースのエンコードの違いだけです。前者は%20に、後者は+に変換します。 rawurlencode http://www.example.com/%2B%E3%81%BB%20%E3%81%92 urlenco…

PHPの可変引数

「3.4.4可変パラメータ」からのメモ。 PHPで可変引数を使うにはfunc_get_args() , func_num_args() , func_get_arg()を使用します。 Array ( [0] => hello…

PHPで文字列から関数を呼び出す

「3.6可変関数」からのメモ。 「可変関数」という名前からはピンとこないのですが、変数に代入した文字列の関数名で関数を呼び出せるということです。 call myfunc

PHPの無名関数

「3.7無名関数」からのメモ。 PHPで無名関数を作るにはcreate_function()を使用します。 hello

PHPでは関数の中の関数もトップレベル

「3.2関数の定義」からのメモ。 PHPでは関数の中に関数を定義することができます。しかしその関数はトップレベルの関数となるので、特段使い道はなさそうです。 (隠蔽ができない) call outer() call inner() Rubyも同じく関数内の関数はトップレベルにな…

PHPでの関数への参照渡し

「3.4.2参照渡しのパラメータ」からのメモ。 関数へ参照渡しで引数を渡す場合は本には以下の方法が書いてありました。 $hoge = 11関数定義の引数リスト側(&$num)に&をつけ、関数呼び出し側($hoge)には何もつけないというところに少し違和感を覚えました。本…

PHPでの関数のデフォルト値

「3.4.3パラメータのデフォルト値」からのメモ。 リテラルをデフォルト値とすることは可能ですが、仮引数をデフォルト値として指定することはできません。 PHP Parse error: syntax error, unexpected T_VARIABLE in /home/h13i32maru/php/3.4.3_default_va…

PHPのforeachイテレータ

「2.5.5foreach」からのメモ。 配列 PHPでは配列をforeachを使って操作することができます。 a b c インデックスも取得する必要がある場合は以下のように使用します。 $value){ echo "$key => $value\n"; } ?> 0 => a 1 => b …

使いどころがいまいちわからないdeclare ticks

「2.5.6declare」からのメモ。 PHPではdeclareを使ってコードブロックに対してディレクティブを指定できすそうです。 (と言われても、僕にはよくわかりません) 現在指定できるディレクティブはticksだけだそうです。ticksは指定した間隔で特定の関数を実行…

PHPのincludeとrequireの違い

「2.6外部コードの読み込み」からのメモ。 PHPには外部コードを読み込む方法はincludeとrequireの2つの方法があります。それぞれの違いは指定されたファイルが無い場合の挙動の違いです。 includeは警告を発生させ、実行は続けられる requireはエラーを発生…

PHPタグいろいろ

「2.7ウェブページへのPHPの埋め込み」からのメモ。 XML形式 通常この形式を使うことを推奨されています。 SGML形式 SGML形式はショートタグと呼ばれているそうです。 SGML形式では以下のようにechoを使わず、内容を直接書き出すこともできます。 <input type="text" name="num" value="<?= 1 + 1 ?>"/> <input type="text" name="num" value="2"/> ASP形式…

PHPのインクリメント、デクリメント

「2.4.7インクリメント演算子とデクリメント演算子」からのメモ。 PHPでは++や--で演算子で文字列のインクリメント/デクリメントもできるようです。 b aazをインクリメントすると繰り上がり、aaになります。これはあたかもa~zの26進数を使っているような感…

PHPのオブジェクトから配列へのキャスト

「2.4.11キャスト演算子」からのメモ。 他の言語と同じように基本型であれば(int)や(string)を使うことで型を明示的に変換することができます。 一つだけ面白いなと思ったのはObjectをArrayに変換することができる点です。(逆もできます)

オライリー本で=の結合規則を間違えてる

「2.4.12.1代入」からのメモ。 PHPでは他の言語と同じように=を複数使うことで変数に一括して代入を行うことができます。 $a = 10 , $b = 10 , $c = 10結果から=の結合規則は「右から左」ですね。ですが、「2.4式と演算子」の演算子の優先度と結合規則表に…

PHPでは配列は値渡し

あるバージョンのPHPでは配列は参照渡しだったという記事も見かけましたが、現在(v5.3)では値渡しのようです。 $a[0] is 100 $b[0] is 1000 Rubyでは参照渡しになるので、間違わないように注意が必要です。 a = [10,20,30] b = a a[0] = 100 b[0] = 1000 …

PHPの変数操作

「2.3変数」からのメモ 変数展開 文字列中に変数を書くと自動的に展開されます。 $hoge is hello 可変変数 変数名を文字列として指定できる $foo is hello $$hoge is hello 変数への参照 変数のポインタを使用する

PHPの変数スコープ

「2.3.3変数のスコープ」からメモ ブロックスコープ PHPにはブロックスコープは無いようです。 $hoge = 9for文内で生成された$hogeがブロックを抜けても使用可能なので、ブロックスコープが無いということです。 グローバルスコープ トップレベルで宣言した…

PHPでfalseと判定されるもの

「2章PHP言語の基本 2.2データ型」からのメモ。 falseと判定されるもの ==を使ってfalseと判定されるものをまとめてみました。

PHPは大文字と小文字を区別しないこともある

「2章PHP言語の基本 2.1字句構造」で少し気になったところのメモです。 大文字/小文字 PHPでは「ユーザが定義したクラスや関数の名前、echoやwhile、classといった組み込みのキーワードの名前」について大文字/小文字を区別しません。 hello hello hello

MacにVirtualBox3をインストール

ようやくメインマシンをWindowsからMacに移行し始めました。 で、開発環境を作るためにVMWareのMac版であるVMWareFusionを使おうと思ったんですが、有料なんですね。。。Amazon価格で1万円ほど。うーん、どうしようと思っていたら、そういやVirtualBoxにMac…

PHPの勉強はじめました(C++/PHP/Rubyのクイックソートによる速度比較)

今日からPHPの勉強をはじめることにしました。「RoRとiPhoneアプリはどうした!?」という声が聞こえてきそうですが、PHPの優先度があがったのですよ。 というわけで、アマゾンで2冊ほど購入。マンモスのが良いと言う書評も見かけましたが、オライリーを買う…

iPhone持ってなくてもiPhoneSDKインストールしても良いよね?

僕はiPhone持っていません。断じて持っていません。が、iPhoneアプリに興味があるので、SDK入れてHelloWorldしてみました。 Apple Developer iPhoneSDKをダウンロードするために、ここからApple Developerに登録します。 Apple Developer Registration - App…