var_dump($arr)
array(4) {
[0]=>
array(4) {
[0]=>
string(1) "1"
[1]=>
string(1) "2"
[2]=>
string(1) "3"
[3]=>
string(2) "4
"
}
[1]=>
array(4) {
[0]=>
string(1) "5"
[1]=>
string(1) "6"
[2]=>
string(1) "7"
[3]=>
string(2) "8
"
}
[2]=>
array(4) {
[0]=>
string(1) "9"
[1]=>
string(2) "10"
[2]=>
string(2) "11"
[3]=>
string(3) "12
"
}
[3]=>
array(4) {
[0]=>
string(2) "13"
[1]=>
string(2) "14"
[2]=>
string(2) "15"
[3]=>
string(2) "16"
}
}
我想删除$ arr数组中的\n
。
我尝试使用array_walk($arr,'intval');
但它不起作用,因为它是多维数组。解决方案是什么?
是否有内置的PHP功能?或者我需要使用循环并删除它?
P.S:我是新手,尽量不要太技术化。答案 0 :(得分:2)
你可以做到
array_walk_recursive($arr, function(&$v) { $v = trim($v); });
你不能直接使用trim
作为回调,因为它不会通过引用接受参数,所以你必须将它包装在一个回调函数中。
答案 1 :(得分:0)
您可以通过循环和array_map()
$arr = array(
array("1", "2", "3", "4\n"),
array("5", "6", "7", "8\n"),
array("9", "10", "11", "12\n"),
array("13", "14", "15", "16\n"),
);
// result array
$result = [];
// Loop thru array
foreach ($arr as $value) {
// Map thru $value with trim to remove \n then push to result
$result[] = array_map('trim', $value);
}
// Output
echo('<pre>');
print_r($result);
答案 2 :(得分:0)
还有其他选择,但递归循环遍历数组可让您灵活地删除要删除的内容,而不仅仅是换行符:
function removeNewline($array) {
$result = array();
foreach ($array as $key => $value) {
// If the array value is an array itself, call the function recursively
if (is_array($value)) {
$result[$key] = removeNewline($value);
} else {
// Only remove newlines from strings
if (is_string($value)) {
$result[$key] = preg_replace('/\s+/', '', $value);
} else {
$result[$key] = $value;
}
}
return $result;
}