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提示伙伴,它让我走上了正确的道路。
答案 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之前应该调用此函数。