是否有可能做這樣的事情有一個數組:PHP,array_filter和str_replace函數回調
Array
(
[0] => event_foo
[1] => event_bar
[2] =>
)
array_filter($array, str_replace("event_", ""));
,所以我可以用數組只包含值落得和「event_」前綴去掉
Array
(
[0] => foo
[1] => bar
)
是否有可能做這樣的事情有一個數組:PHP,array_filter和str_replace函數回調
Array
(
[0] => event_foo
[1] => event_bar
[2] =>
)
array_filter($array, str_replace("event_", ""));
,所以我可以用數組只包含值落得和「event_」前綴去掉
Array
(
[0] => foo
[1] => bar
)
並非一氣呵成,除非你把它打開成foreach
循環,但你可以map
在filter
的結果:
array_map(function ($s) { return str_replace('event_', '', $s); },
array_filter($array))
爲什麼不直接在原始陣列上使用str_replace
。
這個怎麼樣代碼:
$arr = ["event_foo","event_bar",""];
print_r(array_filter((str_replace("event_","",$arr))));
Dang,我完全忽略了'str_replace'帶數組。你也應該使用'array_filter'來完成這個完整的答案。 – deceze
好吧,我忘記了我也想刪除空值,愚蠢的我:P,所以這裏是更新的答案,希望它被接受 –
試試這個:
$PREFIX = 'event_';
$array = array('event_foo' => 3, 'event_bar' => 7);
$prefixLength = strlen($PREFIX);
foreach($array as $key => $value)
{
if (substr($key, 0, $prefixLength) === $PREFIX)
{
$newKey = substr($key, $prefixLength);
$array[$newKey] = $value;
unset($array[$key]);
}
}
print_r($array); // shows: Array ([foo] => 3 [bar] => 7)
這個工作對我來說..希望它能幫助:)
謝謝,但只是部分有效。空值將被刪除,但前綴'event_'仍然存在。 – Alko
說什麼? https://3v4l.org/IKsoZ – deceze