如何对每个内爆的值执行操作


How to perform an action on each imploded value?

我没有真正的用例,只是想知道这是否可能以及我应该如何做到。

假设我有以下数组:

$array = array('1234', '5678', '9101', '1121', '3141');

我想打破这种局面。

$string = implode(',', $array);

假设我想在values发生内爆之前对其执行一个操作。例如,使用strrev()反转字符串。我该怎么做?

编辑

我会尽量解释得更好一点。

$array = range('a', 'z');
// I know this is not possible    
$string = implode(', ', strtoupper($array));
// Desired output : A, B, C, D ...

我想知道是否可以使用array_map()来完成,但不适合使用该函数。

array_map函数对于内置和"自定义"函数(作为函数的第一个参数)应该可以正常工作:

$array = array('1234', '5678', '9101', '1121', '3141');
$string = implode(', ', array_map("strrev", $array));
print_r($string);  // "4321, 8765, 1019, 1211, 1413"

另一种方法:

function addSeparator($word, $char = "-") {
    $words = str_split($word, 2);
    return implode($char, $words);
}
$string = implode(', ', array_map("addSeparator", $array));
print_r($string);  // "12-34, 56-78, 91-01, 11-21, 31-41"

只需在内爆之前执行逻辑:

$array = array('1234', '5678', '9101', '1121', '3141');
foreach ($array as &$value) {
    $value = strrev($value);
}
$string = implode(',', $array);