我正在尝试动态生成字符串n,然后在list()
中使用它来捕获变量中的数组值。
代码:
<?php
$bubba = "value1, value2, value3, value4, value5, value6, value7";
$hubba = explode(",", $bubba);
$num = count($hubba);
ob_start();
for($i=1; $i<=$num; $i++){
echo ('$k'.$i.', ');
}
$varname = ob_get_clean();
$varname = substr($varname, 0, -2);
list(echo $varname;) = $hubba;
我希望看起来像这样:
list($k1, $k2, $k3, $k4, $k5, $k6, $k7) = $hubba;
echo $k1; // must echo value1
?>
但是,list只是不准备接受变量字符串。怎么做?
答案 0 :(得分:1)
您正试图以错误的方式解决问题。大多数经验丰富的开发人员都会告诉你,他们已经走上了这条道路,这是一条死胡同。为什么要使用$k0
代替现有的$k[0]
?但是,为了好玩,这是一个有效的例子:
extract($hubba, EXTR_PREFIX_ALL, 'k');
echo $k_0;
或者另一个,为了好玩,这就像你描述的那样:
foreach($hubba as $k => $v) {
${'k'.($k+1)} = $v;
}
echo $k1;
或者最后,为了更有趣,使用list()
没有明显的理由:
for($i=1; $i<=$num; $i++) {
$var[] = '$k'.$i;
}
$vars = implode(', ', $var);
eval("list($vars) = \$hubba;");
echo $k1;
我建议你加入为什么,你认为你需要这个,而且肯定有更好的解决方案。