如何在php中的数组中应用rtrim函数

问题描述 投票:0回答:2

我有一个这样的数组

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
方式解决。

php arrays cakephp cakephp-2.0 array-map
2个回答
0
投票

你可以这样做:

$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()
寻找完全匹配。

还写

"&raquo;"
似乎不起作用,无论是单引号还是双引号,因此我使用了字符
"»"

我不了解cakephp,但是这种基本功能的使用与框架无关......


0
投票

使用

array_map
rtrim
函数应用于数组中的每个元素,删除尾随的
&raquo;
和任何额外的空格。生成的数组将具有更新后的值,且不带尾随字符

$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);
© www.soinside.com 2019 - 2024. All rights reserved.