2012-07-26 73 views
0

我创建一个类别列表12..20不同的类别,当他们点击并发送一个类别,将通过代表类别数据库中的数值..添加值变量PHP

例如:

<option value="1">Apple</option>
<option value="2">Microsoft</option>

的原因,我在数据库中传递一个数值,是因为我对网页超过1周的语言,和我有不同的标签文件。我想根据类别编号回显一个php变量。

<? echo $ct_1; ?>

但为了避免大量的if/else语句,我想知道我是否可以将号码添加到该变量。所以,如果我循环类别是这样的:$row['category']我想该变量添加到其他的..像这样:

<? $category = $.'ct_'.$row['category']; echo $category; ?>

我知道这是不可能的。但我希望你能我的想法,也许有这个解决方案。

+2

其实* *是可能的。你只需要在PHP手册中阅读它:http://php.net/manual/en/language.variables.variable.php – hakre 2012-07-26 15:28:57

回答

4

这就是所谓的variable variables

$category = ${'ct_'.$row['category']}; 
echo $category; 

或者只是:

echo ${'ct_'.$row['category']}; 

+0

这是完美的! :D非常感谢!立即开始工作,正是我所需要的...感谢您的快速反应..我只知道它不会那么困难..我一直试图自己做,但我用'()'和'[] '而不是'{}'..只要看看那个..我非常接近:p – Dimser 2012-07-26 15:33:25

+0

@PhilipJensBramsted:很高兴我能帮忙:-D是的,这个'{}'是用来在运行中创建字符串的PHP。 '{}'也可以在对象'$ obj - > {'prop-name'。$ x}'中使用。 – 2012-07-26 15:34:00

0

快速和肮脏的方法是使用eval

eval('$category = $ct_'. $row['category'] . ';'); 
echo $category; 

确保输入首先消毒!

+0

然后你确定实际返回一些东西:) – hakre 2012-07-26 15:29:20

2

你可以使用eval(),但这可能会导致一些非常大的安全漏洞。

我建议使用数组来代替:

$ct = array(1 => "Apple", 2 => "Microsoft"); 
echo $ct[$row['category']]; 
3

量身定做variable variableDocs例如:

<?php $category = 'ct_'.$row['category']; echo $$category; ?> 

如果你仔细看,它几乎identival到你:

<?php $category = $.'ct_'.$row['category']; echo $category; ?> 
       ^       ^
+0

好吧然后..我是不是很正确:P – Dimser 2012-07-26 15:46:34