回答ではないです
配列操作において、初学者の覚えるべき関数は foreach です。
foreach は万能です!
foreach が使えるようになれば、他の配列系の関数を使用するケースはごく僅かです。
array_filter を使用するにはコールバックの概念への理解が必要となるので、foreach で書き直してみては?
追記
どちらかというと、ループ方法より、文字列の比較方法の方が仕様に影響されます。
以前検証用に作成したものの抜粋を貼っておきます。
(検証内容が全然別の内容なのでちょっとコードはアレですがw)
マニュアル片手に $findme を適当に弄ってみると面白いです。
文字列比較関数は他にもあるので、調査してみても面白いと思います。
php
1<?php
2$array = ['aaa', 'bbb', 'ccc', 'AAA', 'BBB', 'CCC', 'Abc', 'Bbb', 'CBA'];
3$findme = "a";
4// $findme = "ab";
5foreach($array as $key => $val){
6 echo "key '" . $key . "' => val '" . $val . "'" . PHP_EOL;
7 echo join([
8 strpos($val, $findme) !== false ? "strpos " : NULL,
9 stripos($val, $findme) !== false ? "stripos " : NULL,
10 strstr($val, $findme) !== false ? "strstr " : NULL,
11 preg_match('/' . $findme . '/', $val) !== 0 ? "preg_match" : NULL,
12 PHP_EOL,
13 ]);
14}