PHPでArrayのSelectをする
RubyのHash#slice みたいなのをPHPでやりたかったのでメモ。
RubyのHash#sliceとは
ハッシュの中から指定したkey/valueを返します。
h = {id: 1, name: 'fwhy', address: 'Tokyo', job: nil}
h.slice(:name, :job)
# => {:name=>"fwhy", :job=>nil}
これをPHPでやりたいのです。
array_intersect_keyとarray_flipを使う
array_intersect_key と array_flip を使うことで実現できます。
$a = ['id' => 1, 'name' => 'fwhy', 'address'=> 'Tokyo', 'job'=> null];
array_intersect_key($a, array_flip(['name', 'job']));
// => ['name' => 'fwhy', 'job' => NULL]
ちなみに
Laravelならヘルパの Arr::only が使えます。
use Illuminate\Support\Arr;
$a = ['id' => 1, 'name' => 'fwhy', 'address'=> 'Tokyo', 'job'=> null];
Arr::only($a, ['name', 'job']);
// => ['name' => 'fwhy', 'job' => NULL]