如何修剪&x27\n';php中的多维数组
如何修剪&x27\n';php中的多维数组,php,arrays,Php,Arrays,var\u dump($arr) 我想删除$arr数组中的\n 我尝试使用array\u walk($arr,'intval')但它不起作用,因为它是多维数组。解决办法是什么 有内置的PHP函数吗?或者我需要使用循环并删除它 我是个新手,尽量不要太专业 您可以通过循环和 $arr=array( 数组(“1”、“2”、“3”、“4\n”), 数组(“5”、“6”、“7”、“8\n”), 数组(“9”、“10”、“11”、“12\n”), 数组(“13”、“14”、“15”、“16\n”), );
var\u dump($arr)
我想删除$arr数组中的\n
我尝试使用array\u walk($arr,'intval')代码>但它不起作用,因为它是多维数组。解决办法是什么
有内置的PHP函数吗?或者我需要使用循环并删除它
我是个新手,尽量不要太专业 您可以通过循环和
$arr=array(
数组(“1”、“2”、“3”、“4\n”),
数组(“5”、“6”、“7”、“8\n”),
数组(“9”、“10”、“11”、“12\n”),
数组(“13”、“14”、“15”、“16\n”),
);
//结果数组
$result=[];
//环通阵列
foreach($arr作为$value){
//通过$value映射要删除的修剪\n然后推送到结果
$result[]=数组_映射('trim',$value);
}
//输出
回声(“”);
打印(结果);
有替代方案,但递归循环通过数组可以灵活地删除哪些内容,而不仅仅是换行:
array_walk_recursive($arr, function(&$v) { $v = trim($v); });
你可以这么做
不能直接将trim
用作回调,因为它不接受引用参数,所以必须将其包装在一个接受引用的回调中
Demo是的,我指的是链接中断。@FirstOne是的,它在4
、8
和12
上array\u walk
有一个兄弟名称array\u walk\u recursive
…在数组中循环使用简单的trim(),这不是你在这里已经讨论过的同一个问题,请注意,有一个用于递归遍历数组的内置函数。是的,我在发布这篇文章后看到了答案。它可能比我的功能还快。我不知道速度,但还有一个方面是关于不重新发明轮子。当使用内置/知名的功能/工具时,您可以指望对它们进行测试和优化(至少在大多数情况下)。无论如何,这是一个很好的脑力锻炼。这就是它,这是这个问题的一个好答案。@JasomDotnet谢谢。不过,大多数编码标准都会将其设置为七行;)
$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);
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;
}
array_walk_recursive($arr, function(&$v) { $v = trim($v); });