php 数组,foreach 键跳过一个值

标签 php mysql arrays foreach

这里是一个 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/

相关文章:

javascript - 如何使用 PHP、MySqL 和 JQuery 将动态字段的值插入数据库

php - 对照另一个数组检查数组

php - 借助 PHP - Image Magick 转换 .SVG 图像

php - Codeigniter 日历库显示周和月

php - Mysql - 仅在输出中重复行

mysql - SQL:如何将分号附加到列值。

python - Have 子句中的 SQLAlchemy 引用标签

arrays - 在 Swift 中从二进制文件中读取整数

php - 如何获得时间和给定多个时间之间的间隔重叠?

javascript - 将随机数存储在长度为 25 的数组中