php数组,foreach键正在跳过一个值

时间:2014-07-19 02:26:27

标签: php mysql arrays foreach

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

<?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克隆函数动态克隆数组,这可能是问题吗?

更新:好的,我已经解决了这个问题,这是由于我使用的jQuery克隆脚本。我为自己的工作修改了一个现有的脚本,并错过了那里的一些重要的id编号。感谢var_dump提示伙伴,它让我走上了正确的道路。

1 个答案:

答案 0 :(得分:0)

你可以尝试:

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

FixArrayKeys($_POST['array']);

它应该做的伎俩!

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