カテゴリ: 未分類 - ページ 11

PHPに対話モードがあったというお話

Pythonを普段から使っていて、コンソールからPythonを呼び出すとすぐに対話モードになってコードを入力するとすぐに実行できるので、関数の動作確認にものすごく重宝していたのですが、PHPにはこの対話モードなんてないだろうなぁと思っていたのですが、実はあったようです。ただ、Linuxの環境じゃないとできないらしくて、WindowsのDOSだとなぜかうまくいかなかった。いや、あるんだろうけどね。

やりかたは簡単

コンソールを開いて

php -a

とするだけ、こうすればうじゃうじゃコードを書いてすぐ実行なんてことができる。ただPythonと違うのは、ちゃんとセミコロン(;)をつけないと実行されない上に次に書くコードにも影響が及んでエラーになる。ちょっとだけ慣れが必要かなとおもうのですが、PHPは拡張モジュールの実装がめんどくさいので、ちゃんと動くかどうか調べたり、パーミッションがちゃんと有効になってるかとかいろいろとデバッグ的な使い方はできそうですね。

対話型シェルを知らないとぜんぜん開発の効率も変わってくると思います。

まとめ

対話型は楽しい!

連想配列とオブジェクトの違い

一瞬頭がこんがらがった。記述の仕方は同じなのに、結果が出てこないし、JSONオブジェクトにも変換できない。どうしてなんだろうと思ったら、自分が記述していたのは連想配列のほうだった。

連想配列はこんなかんじ。

var a = [];
a["hoge"] = 1; //a.hoge = 1;
console.log(a);
//結果:[]Code language: JavaScript (javascript)

オブジェクトはこんなかんじ。

var a = {};
a["hoge"] = 1; //a.hoge = 1;
console.log(a);
//結果:Object > hoge: 1, __proto__: Object >Code language: JavaScript (javascript)

var a = [];は var a = Array();
var a = {}; は var a = Object();


記述は同じだけど、中身の扱いが全く違う別物なので、初歩的ミスながら気づくのにちょっと時間がかかってしまった。

連想配列 hoge[“map”] が使えない理由

連想配列を作ろうと思い hoge[“map”] = 1 と代入しようとしたらエラーが発生した。
なぜなんだろうと思い調べたら、下記の記載を見つけた。

JavaScriptの配列ってmapとかfilterとかあったんだ – phithonの日記

[“map”]は .mapとしても使えるので、予め配列にはmapメソッドが定義されていたらしい。mapは全ての配列の値に対して計算を行い配列を返すメソッドらしい。こんな便利なものがあったとは知らなかった。

.filterというのは、ifのような条件式のようだ。これを使うと絞込みをできる。.sortは名前の通りソート。こんな簡単にソートができたなんて驚き。