Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修剪&x27\n';php中的多维数组_Php_Arrays - Fatal编程技术网

如何修剪&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); });