繁体   English   中英

将\\ n更改为另一个阵列中的阵列值

[英]Changing \n into ARRAY values within another ARRAY

我有这个表格发送的

Array
(
    [0] => one
two
three
    [1] => hello
how
are
)

由于值是通过表单的textarea发送的,因此它具有换行符,因此我想对每个表单进行更改
放入数组字段,如下所示:

Array
(
    [0] => Array
        (
            [0] => one
            [1] => two
            [2] => three
        )

    [1] => Array
        (
            [0] => hello
            [1] => how
            [2] => are
        )

)

这是我到目前为止的内容:

foreach ($array as &$valor) {   
    foreach(preg_split("/((\r?\n)|(\r\n?))/", $valor) as $line){
    $arraynew[] = $line;
}
}

但是我得到这个结果

Array
(
    [0] => one
    [1] => two
    [2] => three
    [3] => hello
    [4] => how
    [5] => are
)

我究竟做错了什么? :(

对于POST数组中的每个键,将一个值弹出到最终数组上,其中的值包含一个数组,其值代表POST数组中的每一行。

<?php
$data = array(
 0 => "one\ntwo\nthree", 
 1 => "hello\nhow\nare"
);

$final = array();
for($i = 0; $i < count($data); $i++) {
  $row = preg_split('/\n/', $data[$i]);
  if(is_array($row)) {
    for($j = 0; $j < count($row); $j++) {
      $final[$i][] = $row[$j];
    }
  }
}

var_dump($final);

array(2) {
  [0] =>
  array(3) {
    [0] =>
    string(3) "one"
    [1] =>
    string(3) "two"
    [2] =>
    string(5) "three"
  }
  [1] =>
  array(3) {
    [0] =>
    string(5) "hello"
    [1] =>
    string(3) "how"
    [2] =>
    string(3) "are"
  }
}

演示

好吧,你真的很努力。

array_map(function($e) { return explode("\n", $e); }, $orig_array);

是你所需要的全部。 如果确实需要,可以使用preg_split ,但是explode就足够了。

你可以简单地做到这一点

 $array=array("one\ntwo\nthree","hello\nhow\nare");
 $arraynew=array();
 foreach ($array as &$valor) {   
 $arraynewtemp=array();
 foreach(preg_split("/((\r?\n)|(\r\n?))/", $valor) as $line){
 $arraynewtemp[] = $line;
 }
 array_push($arraynew,$arraynewtemp);
 }

 var_dump($arraynew);

将输出

 array(2) {
 [0]=>
  array(3) {
  [0]=>
   string(3) "one"
  [1]=>
   string(3) "two"
  [2]=>
   string(5) "three"
   }
 [1]=>
  array(3) {
  [0]=>
   string(5) "hello"
  [1]=>
   string(3) "how"
  [2]=>
   string(3) "are"
 }
}

这应该工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM