在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上。