标题不是很具描述性,我道歉,但我想不出更好的解释方法。我在数据库中有多达10个序列化数组。我将它们拉下来并将它们反序列化为一个新的数组:
$specimen0 = unserialize($row['specimen0']);
$specimen1 = unserialize($row['specimen1']);
然后将其格式化为显示样本的有序列表。由于每个样本有大量数据,我不想一遍又一遍地编码10次。我的while循环看起来像这样:
while($i <= $num) {
if(isset($specimen{$i})) {
echo 'Yep';
}
$i++
}
这是通用版本。由于某种原因,i变量不会附加到样本变量,以创建一个适合我想要的变量。这可能是我看起来很简单的事情,或者php无法按我需要的方式处理它。任何帮助将不胜感激。
答案 0 :(得分:3)
while($i <= $num) {
$target='specimen'.$i;
if(isset($$target)) {
echo 'Yep';
}
$i++
}
答案 1 :(得分:1)
Fatherstorm描述了如何纠正你的代码。让我惊讶的是:你为什么不使用这样的数组:
$specimen = array();
$specimen[0] = unserialize($row['specimen0']);
$specimen[1] = unserialize($row['specimen1']);
// maybe you could also use an foreach($specimen as $key=>$array) here,
// don't know what you're trying to do...
while($i <= $num) {
if(isset($specimen[$i])) {
echo 'Yep';
}
$i++
}
否则你必须像其他提到的那样使用variable variables - 这将最终导致无法读取(且无法维护)的代码。如果你想使用像数组这样的东西,可以为这个工作拿一个数组。
答案 2 :(得分:0)
while($i <= $num) {
$var='specimen'.$i;
if(isset(${$var})) {
echo 'Yep';
}
$i++
}
你想做什么:
$str='abcdef';
echo $str{4}; //echo e;
$i=3;
echo $str{$i};//echo d