2014-07-19 172 views
0

一个php noob在这里。刚刚开始一个月前。我目前使用foreach key=> value来同时遍历两个数组。但是,经过一些调试后,我发现在我的代码中,密钥跳过了数字1?即关键值为[0 2 3 4 ...]。 这里是我的代码:php数组,foreach键跳过一个值

<?php 
foreach($_POST['array'] as $key=>$value) 
{ 

echo $key; 

//set up mysql connection 
mysql_connect("localhost", "root", "") or die(mysql_error()); 
//select database 
mysql_select_db("database") or die(mysql_error()); 

$value= mysql_real_escape_string($value); 
$query = "SELECT Hours 
FROM Table 
WHERE Activity = '$value';"; 

$result = mysql_query($query) or die(mysql_error()); 

$row = mysql_fetch_array($result); 

    echo $row['Hours']; 
    echo '<br>'; 


    } 
?> 

奇怪的是我调用了同一个脚本较早,但不同的阵列和关键值不跳过,所以这是我莫名其妙。任何帮助表示赞赏!

编辑:这里是我所要求的数组内容。

//key array 
array(2) { [0]=> string(3) "abc" [2]=> string(4) "abcd" } 
//value array 
array(2) { [0]=> string(1) "2" [1]=> string(1) "8" } 

我在这里看到问题,因为键和值迭代不匹配。我目前正在使用jQuery克隆函数来动态克隆数组,这可能是问题吗?

UPDATE:好的我已经解决了这个问题,这是由于我使用的jQuery克隆脚本。我为自己的作品修改了现有的脚本,并在那里错过了一些关键的id编号。感谢var_dump小窍门,它让我走上了正确的道路。

+3

你确定关键是在后期数组?在你的'foreach'之前加上这个:'var_dump($ _ POST ['array']);'并且确保数组的内容符合你的期望。 – dave

+0

你可以发布'var_dump($ _ POST ['array'])'的内容吗? –

+0

你是什么意思跳过?你没有得到结果吗?尝试'echo $ query;'并检查 –

回答

0

你可以尝试:

function FixArrayKeys(&$array) { 
    $max = key(end($array)); 
    for($i = 0; $i < $max; $i++) { 
     if(!isset($array[$i])) { 
      $array[$i] = ''; 
     } 
    } 
} 

FixArrayKeys($_POST['array']); 

它应该做的伎俩!

在运行foreach之前应该调用这个函数。