PHP爆炸并将其分配给多维数组MKII:)

时间:2017-03-21 20:15:44

标签: php arrays multidimensional-array explode

我在另一篇文章中发现了这个代码,我发现它非常有用,但对我来说它只有一半的等式。与下面的代码内联,我需要从数据库中取出字符串,将其分解为2d数组,编辑数组中的值并将其内核以相同的格式存储起来。所以特别向后按照与现有脚本相同的顺序。

你们中的任何一个巫师能帮帮我吗? :)谢谢!

来自其他帖子>>

的代码
$data = "i love funny movies \n i love stackoverflow dot com \n i like rock song";
$data = explode(" \n ", $data);

$out = array();
$step = 0;
$last = count($data);
$last--;

foreach($data as $key=>$item){

   foreach(explode(' ',$item) as $value){
    $out[$key][$step++] = $value;
   }

   if ($key!=$last){
    $out[$key][$step++] = ' '; // not inserting last "space"
   }

}

print '<pre>';
print_r($out);
print '</pre>';

1 个答案:

答案 0 :(得分:0)

引用的代码插入单独的数组元素,这些元素只有一个空格作为值。人们可能想知道它带来了什么好处。

以下是您可以使用的两个功能:

function explode2D($row_delim, $col_delim, $str) {
    return array_map(function ($line) use ($col_delim) {
        return explode($col_delim, $line);
    }, explode($row_delim, $str));
}

function implode2D($row_delim, $col_delim, $arr) {
    return implode($row_delim, 
        array_map(function ($row) use ($col_delim) {
            return implode($col_delim, $row);
        }, $arr));
}

它们彼此相反,其工作方式与标准的 explode implode 函数类似,不同之处在于您需要指定两个分隔符:一个用于分隔行,以及列的另一个。

以下是您将如何使用它:

$data = "i love funny movies \n i love stackoverflow dot com \n i like rock song";

$arr = explode2D(" \n ", " ", $data);

// manipulate data
// ...
$arr[0][2] = "scary";
$arr[2][2] = "balad";

// convert back

$str = implode2D(" \n ", " ", $arr);

repl.it上看到它。