在两个不同版本的PHP中爆炸时,array_map的语法问题

时间:2014-09-02 23:49:32

标签: php mysql arrays

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

数组如下: -

myid1|My Title|Detailed Description
myid2|My Title|Second Row Description
myid3|My Title|Third row description

我所做的是我在其上使用explode来获得我想要的结果。

$required_cells = explode('|', $bulk_array);

但问题是只有我的第一个阵列被正确爆炸,并且下一个阵列的下一个第一个单元格由于“新行”而混合。因此我不能仅使用爆炸。

为了获得连续数组单元格中的上部数组,我使用下面的代码: - (在this主题的帮助下)

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
)

工作代码: -

$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);

这很好用,但后来发生了问题。此代码在PHP V5.4.10中正常工作,但在PHP V5.2.14中出现以下错误。我的开发服务器是5.4.10,不幸的是我的生产服务器是5.2.14因此我需要解决这个问题。错误如下: -

  

解析错误:第310行的page.php中的语法错误,意外的T_FUNCTION,期待')'

1 个答案:

答案 0 :(得分:2)

你需要爆炸两次!

$result=array();
$lines=explode("\n", $str);
foreach ($lines as $line) 
  $result[]=explode('|', $line);

或者保持一个维度:

$result=array();
$lines=explode("\n", $str);
foreach ($lines as $line) 
  $result=array_merge($result,explode('|', $line));