我有一个名为$ excelData的数组。 print_r($ excelData)返回以下内容:
Array (
[0] => Array (
[0] => Array (
[0] => name
[1] => test
[2] => 4
[3] => test@test.com
[4] => it4249
[5] => sha256:1000:
)
)
[1] => Array (
[0] => Array (
[0] => fseconf
[1] => test2
[2] => 3
[3] => example@test.com
[4] => ft9655
[5] => sha256:1000:
)
)
)
我正在尝试使用以下代码打印每种情况下的第4个索引(即it4249和ft955):
$query = "INSERT INTO tblTest (username, fname, surname, year, email) VALUES";
$qPart = array_fill(0, count($excelData), "(?, ?, ?, ?, ?)");
$query .= implode(",",$qPart);
$sth = $dbh->prepare($query);
$i = 1;
print_r($excelData);
echo "<br />";
echo "<br />";
Foreach($excelData As $Row){
echo "Username: ".$Row[0][4];
echo "<br />";
echo "<br />";
$sth->bindValue($i++, $Row[0][4]);
$sth->bindValue($i++, $Row[0][0]);
$sth->bindValue($i++, $Row[0][1]);
$sth->bindValue($i++, $Row[0][2]);
$sth->bindValue($i++, $Row[0][3]);
}
但它只是打印了42249次。为什么这不起作用,我该如何做到这一点?
修改
更改我的循环以通过引用传递,如下所示解决了我的问题,但我不知道为什么 - 任何解释?
Foreach($excelData As &$Row){
}
答案 0 :(得分:1)
可能找到错误的小片段。在定义查询之前放置,以查看它是否输出了您期望的内容,以及查询后是否正常,等等。
<?php
reset($excelData);
echo count($excelData)."<br>"; //should be 2
do{
echo 'KEY: '.key($excelData); //fist 0, then 1
$tmp=current($excelData);
echo '<pre>'.print_r($tmp,true).'</pre><br>';
}
while(next($excelData));
?>
它给了我你展示的输出。如果没有,你的阵列肯定存在问题。
答案 1 :(得分:0)
嵌套3次。
foreach ($other as $arr)
{
foreach($arr as $arr1)
{
foreach($arr1 as $k=>$v)
{
if($k==4)
{
echo $v.'<br/>';
break; // as suggested by u_mulder
}
}
}
}
<强> OUTPUT :
强>
it4249
ft9655
答案 2 :(得分:0)