Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 访问数组中数组的索引值_Php_Arrays - Fatal编程技术网

Php 访问数组中数组的索引值

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]

我有一个名为$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] =>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
然后在找到正确的值后停止执行last
foreach
。如果
($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));
?>