Php 访问数组中数组的索引值
我有一个名为$excelData的数组。print\r($excelData)返回以下内容:Php 访问数组中数组的索引值,php,arrays,Php,Arrays,我有一个名为$excelData的数组。print\r($excelData)返回以下内容: 数组( [0]=>数组( [0]=>数组( [0]=>名称 [1] =>测试 [2] => 4 [3] => test@test.com [4] =>it4249 [5] =>sha256:1000: ) ) [1] =>数组( [0]=>数组( [0]=>fseconf [1] =>测试2 [2] => 3 [3] => example@test.com [4] =>ft9655 [5]
数组(
[0]=>数组(
[0]=>数组(
[0]=>名称
[1] =>测试
[2] => 4
[3] => test@test.com
[4] =>it4249
[5] =>sha256:1000:
)
)
[1] =>数组(
[0]=>数组(
[0]=>fseconf
[1] =>测试2
[2] => 3
[3] => example@test.com
[4] =>ft9655
[5] =>sha256:1000:
)
)
)
我试图用以下代码打印每种情况下的第四个索引(即it4249和ft955):
$query=“插入tblTest(用户名、fname、姓氏、年份、电子邮件)值”;
$qPart=数组填充(0,计数($excelData),“(?,?,?,?,?)”;
$query.=内爆(“,”,$qPart);
$sth=$dbh->prepare($query);
$i=1;
打印(excelData);
回声“
”;
回声“
”;
Foreach($excelData作为$Row){
echo“用户名:”.$Row[0][4];
回声“
”;
回声“
”;
$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]);
}
但它只是两次打印4249。为什么这不起作用?我如何才能做到这一点
编辑:
将我的循环更改为通过引用传递,如下所示解决了我的问题,但我不知道为什么-有任何解释吗
Foreach($exceldataas&$Row){
}
向下嵌套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
}
}
}
}
我已经运行了你的代码。它起作用了。您的数组()可能有问题 检查演示
一个小片段,可能会发现哪里出了问题。在定义查询之前放置if,以查看它是否输出了您期望的内容,以及在查询之后是否正常,依此类推
<?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));
?>
它给了我你展示的输出。如果没有,您的数组就有防御性的问题。使用
break
然后在找到正确的值后停止执行lastforeach
。如果($k==4)
有效,则无需进一步循环last-foreach<代码>如果($k==4){echo$v.;break;}哦,你是对的。增加了
break代码>在代码中给出了你的信誉。支持错误不是我想的那样的理论-这对我也不起作用它还打印了第一个值twiceIt对我很好,所以还有其他问题。代码对我来说很好。哦,奇怪-我已经在循环中添加了我的其余代码,以防发生其他事情?$sth显示了什么?同样的值还是不同的值?您可以不加引号地执行$Row[0][4]
。我将如何响应它?是的,将此代码片段直接放在我的Foreach循环之前,可以得到我上面所期望的精确数组输出。在我的Foreach循环中,我仍然只是重复两次相同的值。可能,而且它只是一个可能,print\r($excelData)
会导致一个问题。如果你把它去掉?或者让它打印($excelData,true)
?
<?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));
?>