如何在php中修剪多维数组中的'\ n'

时间:2017-11-21 12:04:19

标签: php arrays

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:我是新手,尽量不要太技术化。

3 个答案:

答案 0 :(得分:2)

你可以做到

array_walk_recursive($arr, function(&$v) { $v = trim($v); });

你不能直接使用trim作为回调,因为它不会通过引用接受参数,所以你必须将它包装在一个回调函数中。

演示 https://eval.in/904410

答案 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;
}