我有一个这样的数组
Array
(
[1] => Hollywood »
[2] => 3D Animation » Hollywood »
[3] => Natural Beauty » Hollywood » 3D Animation »
[4] => Song » Hollywood »
[5] => Car » Hollywood » 3D Animation »
[6] => Folk Song » Hollywood » Song »
[7] => Modern Song » Hollywood » Song »
)
现在我想删除最后一个
»(>>)
。我认为可以通过rtrim
函数来完成
示例
rtrim("Modern Song » Hollywood » Song »", "»");
现在如何在数组中应用
rtrim
而无需任何循环。
我已经尝试过,但我不知道如何在
rtrim
函数中传递第二个参数
$restult = array_map('rtrim', $arrData);
我也尝试一下
$restult = array_map('rtrim', $arrData, '»');
但是第三个参数必须是数组
Array
(
[1] => Hollywood
[2] => 3D Animation » Hollywood
[3] => Natural Beauty » Hollywood » 3D Animation
[4] => Song » Hollywood
[5] => Car » Hollywood » 3D Animation
[6] => Folk Song » Hollywood » Song
[7] => Modern Song » Hollywood » Song
)
首选以
cakephp
方式解决。
你可以这样做:
$arr = [
'Hollywood » ',
'3D Animation » Hollywood » ',
'Natural Beauty » Hollywood » 3D Animation » ',
'Song » Hollywood » ',
];
function trimRaquo($what) {
return rtrim($what," »");
}
$arr2 = array_map('trimRaquo',$arr);
echo '<pre>';
var_dump($arr2);
echo '</pre>';
我不知道为什么,但是当我省略符号左侧的额外空格:
"»"
而不是" »"
时,该功能将不会被应用。我敢说这是因为 " »" !== "»"
和 rtrim()
寻找完全匹配。
还写
"»"
似乎不起作用,无论是单引号还是双引号,因此我使用了字符 "»"
我不了解cakephp,但是这种基本功能的使用与框架无关......
使用
array_map
将 rtrim
函数应用于数组中的每个元素,删除尾随的 »
和任何额外的空格。生成的数组将具有更新后的值,且不带尾随字符
$data = [
1 => 'Hollywood »',
2 => '3D Animation » Hollywood »',
3 => 'Natural Beauty » Hollywood » 3D Animation »',
4 => 'Song » Hollywood »',
5 => 'Car » Hollywood » 3D Animation »',
6 => 'Folk Song » Hollywood » Song »',
7 => 'Modern Song » Hollywood » Song »',
];
// Remove the trailing » from each element in the array
$result = array_map(function ($item) {
return rtrim($item, '» ');
}, $data);
print_r($result);