展开并赋值给一个多维数组
Explode and assign it to a multi-dimensional array
我在另一个 post 中找到了这段代码,我发现它很有帮助,但对我来说它只是等式的一半。根据以下代码,我需要从数据库中获取字符串,将其分解为二维数组,编辑数组中的值并将其内爆以准备以相同格式存储。所以特别是按照与现有脚本相同的顺序倒退。
来自其他post的代码>>
$data = "i love funny movies \n i love Whosebug 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>';
引用的代码插入单独的数组元素,这些元素只有 space 作为值。人们会想知道这些带来了什么好处。
您可以使用以下两个函数:
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 Whosebug 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 上查看 运行。
我在另一个 post 中找到了这段代码,我发现它很有帮助,但对我来说它只是等式的一半。根据以下代码,我需要从数据库中获取字符串,将其分解为二维数组,编辑数组中的值并将其内爆以准备以相同格式存储。所以特别是按照与现有脚本相同的顺序倒退。
来自其他post的代码>>
$data = "i love funny movies \n i love Whosebug 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>';
引用的代码插入单独的数组元素,这些元素只有 space 作为值。人们会想知道这些带来了什么好处。
您可以使用以下两个函数:
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 Whosebug 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 上查看 运行。