我没有真正的用例,只是想知道这是否可能以及我应该如何做到。
假设我有以下数组:
$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);