我的关闭问题是将它作为数组运行的键返回,我做错了什么?
输入:
$array = array(
'/key1/' => null,
'/key2/part1/' => null,
);
方法:
/**
* Trim slashes from keys or strings
*
* @param $value
* @return array|string
*/
private function trimSlashes($value)
{
if (is_array($value))
{
array_walk($value, function($val, $key) USE (&$value)
{
if (FALSE !== strpos($key, '/')) $key = rtrim($key, '/');
});
} else {
$value = rtrim($value, '/');
}
return $value;
}
这应该返回:
$array = array(
'/key1' => null,
'/key2/part1' => null,
);
答案 0 :(得分:0)
array_walk不可能用于更改数组中的键。 也许你可以在闭包中获得$ value作为类成员而不是引用。 但我认为用foreach-loop迭代它会更好..就像这样..
private function trimSlashes($value)
{
if (is_array($value))
{
foreach ($value as $key => $val) {
unset($value[$key]);
$trimmedKey = rtrim($key, '/');
$value[$trimmedKey] = $val;
}
} else {
$value = rtrim($value, '/');
}
return $value;
}