配列代入殺すマン IDEの正規表現でPHPの配列への順次代入を一括宣言に書き換える手伝いをする正規表現


そんなタイトル(前半部)の古いメモが整理中のローカルで見つかったのでWebに保存です。

言うほど殺せないのはご愛嬌。
配列代入という呼び方も謎。

search
\$(?:.*?)\[(.*?)\]\s*=\s*(.*);
replace
$1 => $2,

使い方

たとえば、


(Calssになってる!!)

PhpStormでこんなコードを見かけたとする。
配列の宣言方法が文化的なお作法になっており、かつコードの編集権限があり自分の美意識に反するとき(どんなときだ

Ctrl + R

で置換機能を呼びだしReplace allすると

ここまで置換されるので、後は$a = [];];を切り取って貼り付けて自動整形にかければ

ここまで持ってこれる。

関連

PHPの配列の作成は初期化と代入のどちらが速いのか - Qiita

書き換える理由付けとして速度を計測しました。


array(.*)[.*]のショートハンド化する正規表現もどこかに書いた気がするが、自動整形で変換できるので需要はない。


今なら静的解析で自動で変換できないものか。


pushや上書きなどに対してセーフティでは無いはずなので、使うなら選択範囲を置換でご安全に。