这里是一个 php 菜鸟。一个月前才开始。我目前正在使用 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 的提示,它让我走上了正确的道路。
最佳答案
你能尝试一下吗:
function FixArrayKeys(&$array) {
$max = key(end($array));
for($i = 0; $i < $max; $i++) {
if(!isset($array[$i])) {
$array[$i] = '';
}
}
}
FixArrayKeys($_POST['array']);
应该可以解决问题!
应在运行 foreach 之前调用此函数。
关于php 数组,foreach 键跳过一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24836164/