我在另一篇文章中发现了这个代码,我发现它非常有用,但对我来说它只有一半的等式。与下面的代码内联,我需要从数据库中取出字符串,将其分解为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>';
答案 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上看到它。