从长字符串中分解多维数组
Exploded multidimensional array from long string
我有一个字符串:
Some text1 Info about text1 Numbers about text1
Some text2 Info about text2 Numbers about text2
Some text3 Info about text3 Numbers about text3
每一行当然都以 \n
结尾,每个文本位都用 \t
分隔。这是我无法改变的。
即一些 text1\tInfo 关于 text1\tNumbers 关于 text1\n
字符串来自 $_POST(),然后我想分解它以便我可以将每一行的每个部分保存在我的数据库中。
我的代码:
$sigs = $_POST['allSigInput'];
$strings = explode ("\n", $sigs);
$sigCount = count($strings);
var_dump($strings);
foreach($strings as $string) {
for($c=0; $c<=$sigCount; $c++) {
${'sigArr_'.$c} = explode ("\t", $string);
}
}
这很好地分解了字符串但是 var_dump();对于所有 $sigArr_# 都是相同的,最后保存的数组。
所以所有 3 个输出都是相同的:
array (size=3)
0 => string 'Some Text3'
1 => string 'Info about text3'
2 => string 'Numbers about text3'
我当然希望这 3 个数组分别包含每行文本的信息并展开,因此由 \t
分隔的每一位文本都在一个数组中。
我不确定你希望如何存储数据,但我认为你在这里有一个额外的循环。
foreach($strings as $string) {
for($c=0; $c<=$sigCount; $c++) {
${'sigArr_'.$c} = explode ("\t", $string);
}
}
Eighter 使用 foreach
或 for
来遍历 strings
数组。
而你在for
循环中的测试条件是错误的
for($c=0; $c<=$sigCount; $c++)
应该是
for($c=0; $c<$sigCount; $c++)
假设您希望使用 for
循环,那么您的代码将变为
//foreach($strings as $string) {
for($c=0; $c<$sigCount; $c++) {
${'sigArr_'.$c} = explode ("\t", $strings[$c]);
}
//}
然后你可以看到输出正确
var_dump($sigArr_0);
var_dump($sigArr_1);
我有一个字符串:
Some text1 Info about text1 Numbers about text1
Some text2 Info about text2 Numbers about text2
Some text3 Info about text3 Numbers about text3
每一行当然都以 \n
结尾,每个文本位都用 \t
分隔。这是我无法改变的。
即一些 text1\tInfo 关于 text1\tNumbers 关于 text1\n
字符串来自 $_POST(),然后我想分解它以便我可以将每一行的每个部分保存在我的数据库中。
我的代码:
$sigs = $_POST['allSigInput'];
$strings = explode ("\n", $sigs);
$sigCount = count($strings);
var_dump($strings);
foreach($strings as $string) {
for($c=0; $c<=$sigCount; $c++) {
${'sigArr_'.$c} = explode ("\t", $string);
}
}
这很好地分解了字符串但是 var_dump();对于所有 $sigArr_# 都是相同的,最后保存的数组。
所以所有 3 个输出都是相同的:
array (size=3)
0 => string 'Some Text3'
1 => string 'Info about text3'
2 => string 'Numbers about text3'
我当然希望这 3 个数组分别包含每行文本的信息并展开,因此由 \t
分隔的每一位文本都在一个数组中。
我不确定你希望如何存储数据,但我认为你在这里有一个额外的循环。
foreach($strings as $string) {
for($c=0; $c<=$sigCount; $c++) {
${'sigArr_'.$c} = explode ("\t", $string);
}
}
Eighter 使用 foreach
或 for
来遍历 strings
数组。
而你在for
循环中的测试条件是错误的
for($c=0; $c<=$sigCount; $c++)
应该是
for($c=0; $c<$sigCount; $c++)
假设您希望使用 for
循环,那么您的代码将变为
//foreach($strings as $string) {
for($c=0; $c<$sigCount; $c++) {
${'sigArr_'.$c} = explode ("\t", $strings[$c]);
}
//}
然后你可以看到输出正确
var_dump($sigArr_0);
var_dump($sigArr_1);