如何重置动态生成的php数组的密钥?

时间:2015-12-02 03:33:34

标签: php arrays dynamic-arrays

我有一个动态生成的数组,其中包含从数据库表列中选择的大约25个数值。然后,我将检索这些值,以便以后使用foreach函数:

$array[] = $row['table_colum_name'];
foreach( $array as $key => $value){
$$key = $value;
$value1 = $array['0'];
$value2 = $array['1'];
...
$value25 = $array['24'];

有时问题是,对于某些查询,返回$ array []的值少于25,这会产生使用上述键获得正确的$ value结果的问题。例如,如果在第24位没有找到结果,那么$ array ['23']实际上会填充$ array ['24']的结果,这会弄乱它下游的整个结果集。

我尝试了以下操作,看看是否有特定键的结果:

if (array_key_exists('23', $array)) {
echo "The '23' element is present in the array";
}

但它似乎无法获取缺少键/值的情况。

任何建议都非常感谢!

2 个答案:

答案 0 :(得分:0)

很难提供一个完美的代码示例,因为您的问题和上面的代码会遗漏一些细节,但基本上,如果我正确地解释您的问题,那么非常类似的东西应该有用: / p>

for( $x = 1; $x <= 25; $x++ ) {
    $foo = 'value' . $x;

    if ( isset( $array[$x-1])) {
        $$foo = $array[$x-1];
    }
    else {
        $$foo = '';
    }
}

因此,假设您的数组的索引范围为“0”到“24”,可能会丢失一些条目,那么最终将使用相应的变量设置$value1$value25数组中的元素(例如$ value1 = $ array ['0']等)但是如果缺少元素(例如数组['6'])则相应的变量(例如$ value7)将被设置到一个空字符串。

我认为这只是我能想到的最清晰,最具防御性的解决方案。

<强>更新

根据评论中的新信息更新版本:

foreach( $array as $key => value ) {
    $foo = 'value' . $key + 1;

    if ( isset( $array[$key])) {
        $$foo = $array[$key];
    }
    else {
        $$foo = '';
    }
}

因此,如果您希望在$value204存在时将$array['203']设置为$array['203']的值,请将+ 1保留在第二行。

答案 1 :(得分:0)

再次感谢大家的回答。

最后,我最终做的是将我的解决方案转移到SQL搜索中并使用正确的外部联接来保持空结果发生时,这样可以保持数组计数不变,从而允许我以可预测,一致的方式检索数组值。