我确实有变量,如
<?php
$num1 = 'txt1';
$num2 = 'txt2';
$num3 = 'txt3';
...
我确实有循环
for ($i=1; $i<100; $i++){
echo 'This is textNr'.$i.':' .$num.$i ;
}
我需要生成之类的结果:
这是textNr1:txt1
当然,使用此代码,我会得到之类的内容:
这是textNr1:'undefined'
,因为$ num。$ i中没有定义$ num;
所以$ num。$ i应该被解析一次并成为$ num1然后$ num1应该被解析第二次,如:
echo 'This is textNr'.$i.':' .$num1 ;
有人知道如何处理吗?
这个问题的技术术语是“变量变量”或“动态变量”!
答案 0 :(得分:4)
您应该执行以下操作:
$nums = array();
$nums[0] = 'txt1';
$nums[1] = 'txt2';
for ($i=0; $i<100; $i++){
echo 'This is textNr'.$i.':' .$nums[$i] ;
}
或者,如果要在循环中以1开始,则在数组中将索引设置为1,
答案 1 :(得分:3)
使用数组(Antoine的答案)是更好的做法。但是,如果您想/需要使用您的解决方案
for ($i=1; $i<100; $i++){
echo 'This is textNr'.$i.':' . ${"num$i"} ;
}
PHP首先评估"num$i"
并使用该结果查找具有该名称的变量,由于${ }
。
有关详情,请参阅:PHP-Manual (Variable Variables)
请注意,您可以使用更深层次的变量名称
$a = "b";
$b = "c";
${${$a}} = 7;
echo $c; // echoes 7
通过数组:你也可以声明一个数组
$array = ('text1', 'text2', 'text3', ... , 'textN');
echo count ( $array ); // echoes N, size of array
显示项目
// Loop on array
foreach ($array as $text) {
echo "$text\n";
}
显示 text1 , text2 ,... textN (每行一个)
您还可以使用 for 循环
$n = count($array);
for($i=0 ; $i<$n ; $i++) echo $array[$i] . "\n";
产生相同的输出。
答案 2 :(得分:2)
php变量可以使用大括号构造,如下例所示:
echo 'This is textNr'.$i.':' .${'num'.$i} . "\r\n" ;
你可以在括号之间放置任何返回者字符串
答案 3 :(得分:1)
你要找的php术语是“变量变量”。 php是支持它的极少数语言之一,并且有充分的理由 - 这种方法闻起来有点不对。
答案 4 :(得分:1)
试试这个:
<?php
$nums = array();
$nums[0] = 'txt1';
$nums[1] = 'txt2';
for ($i=0; $i<count($nums); $i++){
echo 'This is textNr'.$i.':' .$nums[$i] ;
}
?>
是您选择的答案的改进版本。它只显示您为数组设置的值。
答案 5 :(得分:0)
您可以使用数组,如下所示:
$nums = array('txt1','txt2','txt3');
for ($i=0; $i<sizeof($nums); $i++){
echo 'This is textNr'.$i.':' .$nums[$i] ;
}
数组的上限应该是数组的大小,否则你可能会得到$ nums的空值[x]