完整代码

$str = "name1,name2,name3";
$search = "name2";
echo replaceString($str, $search);

/*
 * @param $str,字符串格式:name1,name2,name3
 * @param $search,要替换的字符串;
 * @return string
 */
function replaceString($str, $search)
{
    //将字符串拆分为数组
    $parts = explode(",", $str);

    //删除要替换的部分
    $parts = array_filter($parts, function ($value) use ($search) {
        return $value !== $search;
    });

    //将数组元素连接成一个字符串
    return implode(",", $parts);
}

为了解决这个问题,使用explode()函数将字符串拆分为数组,然后对数组进行操作,最后使用implode()函数将数组元素连接成一个字符串。
使用explode()函数将字符串拆分为数组$parts。然后,再使用array_filter()函数和匿名函数来过滤掉要替换的部分。最后,使用implode()函数将过滤后的数组元素连接成一个新的字符串。这样就可以得到正确的输出name1,name3。

array_filter函数

array_filter() 是 PHP 中的一个函数,用于过滤数组中的元素。它接受两个参数:一个回调函数和一个要过滤的数组。回调函数用于指定过滤条件,如果回调函数返回 true,则该元素会被保留在数组中;如果返回 false,则该元素会被过滤掉。

以下是 array_filter() 的用法示例:

$numbers = [1, 2, 3, 4, 5, 6];

// 使用匿名函数作为回调函数,保留所有偶数
$evenNumbers = array_filter($numbers, function ($value) {
    return $value % 2 === 0;
});

print_r($evenNumbers);
// 输出: Array ( [1] => 2 [3] => 4 [5] => 6 )

在上面的示例中,我们定义了一个包含数字的数组 $numbers。然后,我们使用 array_filter() 函数和匿名函数作为回调函数,保留所有偶数。回调函数通过检查每个值是否为偶数(即模 2 的余数是否为 0)来确定是否保留该值。最后,我们使用 print_r() 函数打印过滤后的数组,输出结果为包含所有偶数的数组。

除了匿名函数,你还可以使用已定义的函数作为回调函数。例如:

function isEven($value) {
    return $value % 2 === 0;
}

$evenNumbers = array_filter($numbers, 'isEven');

在这个示例中,我们定义了一个名为 isEven 的函数,它检查一个值是否为偶数。然后,我们将这个函数作为回调函数传递给 array_filter() 函数,以实现与之前相同的过滤效果。

03-30 04:13