【PHP】array_filter後は連想配列になったりならなかったり

こんにちは、フリーランスエンジニアの太田雅昭です。

PHPのarray_filter

PHPでは、配列のフィルターを以下の様にします。

$newArray = array_filter($array, function($item){
    return $item->isEnabled;
});

ここで気をつけなければいけないのが、PHPは連続した配列と連想配列とが区別がつきません。そしてarray_filterを使った後、キーの連続性が失われなければ連続した配列のままですが、連続性が失われれば勝手に連想配列にされます。発狂しそうです。

そこで以下の様にします。

$newArray = array_filter($array, function($item){
    return $item->isEnabled;
});
$newArray = array_values($newArray);

これでとりえあず、連続した配列が担保されます。もうPHP触りたくないです。

余談

一時期ウィスキーにハマっていたのですが、いつのまにか飲まなくなってました。デスクの上に、いつまでも使われないおしゃれグラスが鎮座しています。