◆ startsWith, endsWith, joinByKey, filterByKey, reduceByEntry
◆ ちょっとしたものを作るときに欲しかったけどなかったので自作 

久々に PHP 触れました
PHP っていっぱい関数があるのですが 思いの外できてほしいことができなかったので関数を作りました

function startsWith($str, $substr){
return (bool)preg_match("/^{$substr}/", $str);
}

function endsWith($str, $substr){
return (bool)preg_match("/{$substr}$/", $str);
}

function joinByKey($arr, $spl){
return join($spl, array_keys($arr));
}

function filterByKey($arr, $fn){
$result = [];
foreach($arr as $k => $v){
if($fn($k)){
$result[$k] = $v;
}
}
return $result;
}

function reduceByEntry($arr, $fn, $acc = null){
foreach($arr as $k => $v){
$acc = $fn($acc, $v, $k);
}
return $acc;
}

使用例
var_dump(startsWith("abcd", "b"));
// bool(false)
var_dump(startsWith("abcd", "abc"));
// bool(true)

var_dump(endsWith("abcd", "cd"));
// bool(true)
var_dump(endsWith("abcd", "bc"));
// bool(false)

var_dump(joinByKey(["a" => 1, "b" => 2, "z" => 128], ";"));
// string(5) "a;b;z"

var_dump(filterByKey(["a" => 1, "b" => 2, "z" => 128], function($key){
return $key === "b";
}));
// array(1) {
//   'b' =>
//   int(2)
// }


var_dump(reduceByEntry(["a" => 1, "b" => 2, "z" => 128], function($acc, $v, $k){
return "{$acc}{$k}={$v};";
}, ""));
// string(14) "a=1;b=2;z=128;"

startsWith, endsWith は JavaScript ならデフォルトでありますし
reduceByEntry も JavaScript なら reduce で value だけでなく key も渡してくれるの reduce で足りています
同じく filterByKey も JavaScript なら両方渡されるので好きな方を使うだけで済みます
これは作ったあとに key だけじゃなく両方渡すようにしておけばよかったと思いました

joinByKey は JavaScript でも
Object.keys(obj).join(", ")
になって PHP と同じようなものです

これを除くと JavaScript はできるのに PHP でできないもの ということになりました
こういう単純でよく使う系は PHP に揃ってそうなのになんでないんでしょう?