filterに使えるarray_intersect_key
第一パラメタの配列の中で、第2パラメタ以降の配列全てに存在するキーのものだけ取得してくれる。
詳しい説明はこちらで。
http://php.net/manual/ja/function.array-intersect-key.php
今まで、Zend_Db_Table_RowのsetFromArrayの存在を知らなかったので、自分でこんなやりかたでfilterしてました。
1 2 3 4 5 6 | $tmp = array(); $table = new Zend_Db_Table_Abstractを継承したクラス(); $cols = $table->info('cols'); foreach ($params as $key => $value) { if (in_array($key, $cols)) { $columns[$key] = $value; } } |
これが、
1 2 3 | $table = new Zend_Db_Table_Abstractを継承したクラス(); $cols = $table->info('cols'); $tmp = array_intersect_key($params, array_flip($cols)); |
と書けます。これ便利ですね。
ZendFrameworkのソースに書いてありました。
なんで今まで見つけれなかったんだろう。必要としてなかったからなのか。
もっと楽な方法がないのかって思えてなかったことに反省。