在PHP中分解包含新行的数组

在PHP中分解包含新行的数组,php,arrays,Php,Arrays,我有一个以“|”分隔的数组。我想做的是用这个标识符分开 数组如下所示:- myid1|My Title|Detailed Description myid2|My Title|Second Row Description myid3|My Title|Third row description 我只是在上面使用了explode,以获得我想要的结果 $required_cells = explode('|', $bulk_array); 但问题是(如下所示),由于“新行”,只有我的第一个数组被

我有一个以“|”分隔的数组。我想做的是用这个标识符分开

数组如下所示:-

myid1|My Title|Detailed Description
myid2|My Title|Second Row Description
myid3|My Title|Third row description
我只是在上面使用了
explode
,以获得我想要的结果

$required_cells = explode('|', $bulk_array);
但问题是(如下所示),由于“新行”,只有我的第一个数组被正确分解,而下一个数组的下一个第一个单元格被混合

我是否可以在连续的数组单元格中获取上面的数组

Array
(
    [0] => myid1
    [1] => My Title 
    [2] => Detailed Description
myid2
    [3] => My Title 
    [4] => Second Row Description
myid3
    [5] => My Title 
    [6] => Second Row Description
)
您可以使用在
|
和EOL上进行分解:

$parts = preg_split('#(\||\r\n|\r|\n)#', $string); // EOL is actually 3 different types
由9个元素组成1个数组

或者先在下线爆炸,然后在下线爆炸:

$lines = preg_split('#(\r\n|\r|\n)#', $string);
$lines = array_map(function($line) {
  return explode('|', trim($line));
});
这将生成3个数组,每个数组包含3个元素。

您可以使用它在
|
和EOL上分解:

$parts = preg_split('#(\||\r\n|\r|\n)#', $string); // EOL is actually 3 different types
由9个元素组成1个数组

或者先在下线爆炸,然后在下线爆炸:

$lines = preg_split('#(\r\n|\r|\n)#', $string);
$lines = array_map(function($line) {
  return explode('|', trim($line));
});

这将生成3个数组,每个数组包含3个元素。

首先在换行符上分解,即“\n”,然后在该数组中循环并在管道上分解,即在换行符上分解

然后
打印($line)将输出:

Array
(
    [0] => Array
        (
            [0] => myid1
            [1] => My Title
            [2] => Detailed Description
        )

    [1] => Array
        (
            [0] => myid2
            [1] => My Title
            [2] => Second Row Description
        )

    [2] => Array
        (
            [0] => myid3
            [1] => My Title
            [2] => Third row description
        )

)

先在换行符上分解,也称为
“\n”
,然后在该数组中循环并在管道上分解,称为
“|”

然后
打印($line)将输出:

Array
(
    [0] => Array
        (
            [0] => myid1
            [1] => My Title
            [2] => Detailed Description
        )

    [1] => Array
        (
            [0] => myid2
            [1] => My Title
            [2] => Second Row Description
        )

    [2] => Array
        (
            [0] => myid3
            [1] => My Title
            [2] => Third row description
        )

)

您可以使用
数组映射

$str = "myid1|My Title|Detailed Description
  myid2|My Title|Second Row Description
  myid3|My Title|Third row description";

$newLine = (explode("\n", $str));
$temp = array();
$result = array_map(function($someStr) use(&$temp) { 
  $exploded = explode("|", $someStr); 
  foreach($exploded as $value) $temp[] = $value;
}, $newLine); 

print_r($temp);
,如果您不需要展平,您可以放下每个零件:

$str = "myid1|My Title|Detailed Description
  myid2|My Title|Second Row Description
  myid3|My Title|Third row description";

$newLine = (explode("\n", $str));
$result = array_map(function($someStr) { 
  return explode("|", $someStr); 
}, $newLine); 

print_r($result);

您可以使用
array\u map

$str = "myid1|My Title|Detailed Description
  myid2|My Title|Second Row Description
  myid3|My Title|Third row description";

$newLine = (explode("\n", $str));
$temp = array();
$result = array_map(function($someStr) use(&$temp) { 
  $exploded = explode("|", $someStr); 
  foreach($exploded as $value) $temp[] = $value;
}, $newLine); 

print_r($temp);
,如果您不需要展平,您可以放下每个零件:

$str = "myid1|My Title|Detailed Description
  myid2|My Title|Second Row Description
  myid3|My Title|Third row description";

$newLine = (explode("\n", $str));
$result = array_map(function($someStr) { 
  return explode("|", $someStr); 
}, $newLine); 

print_r($result);

explode
对字符串进行操作。你没有数组,你有一个字符串。为什么三条记录都在一个字符串中?是否要在
和换行符上爆炸?还是只保留第一行?
explode
对字符串进行操作。你没有数组,你有一个字符串。为什么三条记录都在一个字符串中?是否要在
和换行符上爆炸?还是只保留第一行?哇,这太完美了@Steve输出与您显示的结果有点不同,但我认为使用平面数组没有意义。在这种情况下,您可能希望将不同的字符串分隔为不同的数组。
array\u walk\u recursive()
。没有递归性。@Rudie我想让数组保持平坦,这是我能想到的最好的方法,我用一个新的沙盒链接进行了编辑,但的确,
array\u map
已经足够了。这段代码在PHP版本5.4.10中运行良好,但在PHP版本5.2.14中出现了一个错误哇,这太完美了@Steve输出与您显示的结果有点不同,但我认为使用平面数组没有意义。在这种情况下,您可能希望将不同的字符串分隔为不同的数组。
array\u walk\u recursive()
。没有递归性。@Rudie我想让数组保持平坦,这是我能想到的最好的方法,我用一个新的沙盒链接进行了编辑,但确实,
array\u map
已经足够了。这段代码在PHP版本5.4.10中运行良好,但在PHP版本5.2.14+1中出现了一个错误,但实际上并不需要
preg_split
。只要
分解(\n)
就可以了。如果你不在乎尾随
\r
,是的,如果下线不是
\r
唯一的。你的
trim()
调用句柄
\r
在windows上。+1,但是
预拆分
确实不需要。只要
分解(\n)
就可以了。如果你不在乎尾随
\r
,是的,如果下线不是
\r
唯一的。你的
trim()
调用句柄
\r
在windows上。