我有一个字符串:
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 \ n
的text1 \ tNumber的一些text1 \ tInfo该字符串来自$ _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
分隔的每个文本都在一个数组中。
答案 0 :(得分:0)
我不确定你希望如何存储数据,但我认为你在这里有一个额外的循环。
foreach($strings as $string) {
for($c=0; $c<=$sigCount; $c++) {
${'sigArr_'.$c} = explode ("\t", $string);
}
}
使用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);