(学生時代 Python を書いていた)私が PHP の会社に新卒入社してすぐの頃(4 年前!)のメモがでてきたのでブログに上げてみる。
Pythonista な私が PHP で戦うための辞書。
「Python でこう書くやつ、PHP だとどうなるの?」ってやつを積み重ねていこうと思います。
将来もし、Pythonista な人が来た時の参考にもなれば。
Python | PHP | 備考 |
---|---|---|
x |
$x |
変数 |
instance.attribute |
$instance->attribute |
メソッド・フィールドへのアクセス |
str.split(delim) |
explode($delim, $str) |
Python では文字列メソッドだが、PHP では関数 |
for item in items: |
foreach ($items as $item) {} |
|
str.replace(old, new) |
str_replace($old, $new, $str) |
|
lambda x: x |
function ($x) {return $x;} |
Python の lambda は式である。PHP で外の変数を使うには function ($x) use ($y) {return $x + $y;} のように書く |
map(function, items) |
array_map('function', $items) |
|
len(items) |
count($items) |
|
str1 + str2 |
$str1 . $str2 |
文字列の連結 |
[1, 2, 3] |
array(1, 2, 3) または[1, 2, 3] |
PHP の後者の記法はバージョン 5.4 以降 |
{key: value} |
array($key => $value) または[$key => $value] |
PHP の後者の記法はバージョン 5.4 以降から。Python では辞書型、PHP では(連想)配列。 |
for char in str: |
foreach (str_split($str) as $char) {} |
文字列を1文字ずつ |
[f(item) for item in items if g(item)] |
array_map('f', array_filter($items, 'g')) |
リスト内包表記。f(item) の部分は式であれば良いので、関数である必要はないのがポイント。PHP は「敢えて 1 行で書くなら」って感じなので実際には分けて書くべし。 |
str.strip() |
trim($str) |
|
str[from:to] |
substr($str, $from, $to - $from) mb_substr($str, $from, $to - $from) |
Python のスライスは開始位置と終了位置を指定。開始位置が文字列の長さより大きい場合、 PHP の |