如何在`list()= $ variable`中使用动态生成的字符串?

时间:2016-10-06 14:26:19

标签: php

我正在尝试动态生成字符串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只是不准备接受变量字符串。怎么做?

1 个答案:

答案 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;

我建议你加入为什么,你认为你需要这个,而且肯定有更好的解决方案。