2016-10-06 30 views
0

我想動態生成一個字符串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 

?> 

但是,名單根本不準備接受變量字符串。這個怎麼做 ?

+3

無論你想要做什麼,這是錯誤的方式。 – AbraCadaver

+1

如果從list()調用中刪除「echo」和笑臉,您可能會得到更好的結果。 –

+0

你的意思是:list($ varname)??我試過這個,但列表不接受這 –

回答

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; 

我會鼓勵你包括爲什麼你認爲你需要這一點,肯定是有更好的解決方案。

+0

謝謝隊友。我知道這第二個解決方案,但是,我只是很喜歡這樣去發現它不工作。然後我想知道原因,爲什麼list()不接受。不管怎麼說,多謝拉 ! :) –

+0

這不是真的什麼名單,但增加了更多的樂趣。 – AbraCadaver

+0

@ luna.romania,一種更好的方式來表示感謝接受答案:) –

相關問題