PHP分解并将其分配给多维数组
我想把一个字符串分解两次,然后做一个多维数组PHP分解并将其分配给多维数组,php,arrays,multidimensional-array,explode,Php,Arrays,Multidimensional Array,Explode,我想把一个字符串分解两次,然后做一个多维数组 $data = "i love funny movies \n i love stackoverflow dot com \n i like rock song"; $data = explode("\n", $data); 所以aprint\u r($data)将输出: Array ( [0] => i love funny movies [1] => i love stackoverflow com [
$data = "i love funny movies \n i love stackoverflow dot com \n i like rock song";
$data = explode("\n", $data);
所以aprint\u r($data)代码>将输出:
Array
(
[0] => i love funny movies
[1] => i love stackoverflow com
[2] => i like rock song
)
现在,如果我喜欢这个:
$line_data = explode(" ", $data); // explode $data variable by spaces.
Array
(
[0][0] => i
[0][1] => love
[0][2] => funny
[0][3] => movies
[0][4] =>
[1][5] => i
[1][6] => love
[1][7] => stackoverflow
[1][8] => dot
[1][9] => com
[1][10] =>
[2][11] => i
[2][12] => like
[2][13] => rock
[2][14] => song
)
aprint\u r($line\u data)代码>将给我以下信息:
Array
(
[0] => i
[1] => love
[2] => funny
[3] => movies
[4] =>
[5] => i
[6] => love
[7] => stackoverflow
[8] => dot
[9] => com
[10] =>
[11] => i
[12] => like
[13] => rock
[14] => song
)
但我想要实现的是这样的:
$line_data = explode(" ", $data); // explode $data variable by spaces.
Array
(
[0][0] => i
[0][1] => love
[0][2] => funny
[0][3] => movies
[0][4] =>
[1][5] => i
[1][6] => love
[1][7] => stackoverflow
[1][8] => dot
[1][9] => com
[1][10] =>
[2][11] => i
[2][12] => like
[2][13] => rock
[2][14] => song
)
这里,第一个索引应表示行号,第二个索引将表示字号。
如何将字符串分解成这样的数组?
首先,按换行符将字符串分解。现在你有了一个数组。按空间迭代此数组的值和每个值。下面的代码正是这样做的:
$data = "i love funny movies \n i love stackoverflow dot com \n i like rock song";
$data = explode("\n ", $data);
$num = 0;
foreach($data as &$val){
$exp = explode(" ", $val);
$val = array_combine(range($num, $num+sizeof($exp)-1), $exp);
$num += sizeof($exp);
}
print_r($data);
具有和的替代解决方案:
输出将是:
Array
(
[0] => Array
(
[0] => i
[1] => love
[2] => funny
[3] => movies
[4] =>
)
[1] => Array
(
[5] => i
[6] => love
[7] => stackoverflow
[8] => dot
[9] => com
[10] =>
)
[2] => Array
(
[11] => i
[12] => like
[13] => rock
[14] => song
)
)
试一试
$data=“我喜欢有趣的电影\n我喜欢stackoverflow.com\n我喜欢摇滚歌曲”;
$data=分解(“\n”,$data);
对于($i=0;$i),您可以使用此解决方案,而无需使用explode:
$data = "i love funny movies \n i love stackoverflow dot com \n i like rock song";
$line_data = explode(" ", $data);
$arrayLines = [];
for($i = 0, $j = 0; $i < count($line_data); $i++) {
if($line_data[$i] != "\n") {
$arrayLines[$j][$i] = $line_data[$i];
} else {
$arrayLines[$j][$i] = $line_data[$i];
$j++;
}
}
print_r($arrayLines);
$data=“我喜欢有趣的电影\n我喜欢stackoverflow.com\n我喜欢摇滚歌曲”;
$line_data=explode(“,$data”);
$arrayLines=[];
对于($i=0,$j=0;$i
去做:
$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>';
如果你喜欢又快又脏:
print\u r($d);
会给你这个数组([0]=>1]=>i[2]=>像[3]=>rock[4]=>song)
应该是print\r($data);
@voodoo417谢谢你指出它。请看我更新的答案。$step变量没有用,你可以用这个符号附加到数组的末尾:$out[$key][]=$value;
@cornegigouille兄弟,嫌犯,你还没有得到这个时刻。请在debug/trace/等下尝试plz。逐步了解它的工作原理以及“为什么没有$out[$key][]=$value;”。干杯
$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>';
Array
(
[0] => Array
(
[0] => i
[1] => love
[2] => funny
[3] => movies
[4] =>
)
[1] => Array
(
[5] => i
[6] => love
[7] => stackoverflow
[8] => dot
[9] => com
[10] =>
)
[2] => Array
(
[11] => i
[12] => like
[13] => rock
[14] => song
)
)
foreach($data = explode("\n",$data) as &$d) {
$d = explode(' ',$d);
}