我有一个动态生成的数组,其中包含从数据库表列中选择的大约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";
}
但它似乎无法获取缺少键/值的情况。
任何建议都非常感谢!
答案 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搜索中并使用正确的外部联接来保持空结果发生时,这样可以保持数组计数不变,从而允许我以可预测,一致的方式检索数组值。