2014-09-26 52 views
1

我有一個$ NR變量的「範圍」,作爲陣列與我在以前的函數創建同名的數量,這樣的事情:array_merge()我如何添加一個數組名

$var = 'sorteios_'.$nr; 
$$var = array($sorteio_id); 

我有一個在功能,因此它被創造像3個陣列,名稱:

$ sorteios_1,$ sorteios_2,$ sorteios_3

,我想給他們增加一個array_merge裏面,所以我必須使用$ nr來說明創建了多少個同名的數組。

$nr = 3; 

我希望最終結果看起來像這樣。

$ result = array_merge($ sorteios_1,$ sorteios_2,$ sorteios_3);

,如果你要檢查它(這是因爲我遇到的問題不徹底),這就是全部的功能:

function check_sorteios(){ 

global $db; 

$id = $_SESSION['userid']; 

$query1 = "SELECT * FROM sorteios WHERE userid = $id"; 
$result1 = $db->query($query1); 
$count = $result1->rowCount(); 

if ($count == 0){ $sorteios = 0; echo "sem sorteios";} 

else{ 
$numero = 0; 
$sorteios = 0; 
$nr = 0; 

while($row1 = $result1->fetch()){ 
if ($numero == $count){ return 0;} 

$numero++; 
$sorteio_id = $row1['id']; 

$query2 = "SELECT * FROM productos WHERE id = $sorteio_id"; 
$result2 = $db->query($query2); 
while($row2 = $result2->fetch()){ 

$data = $row2['data']; 
$titulo = $row2['titulo']; 

if (strtotime($data) > time()){ 
if(!isset($$sorteio_id)){ 
$$sorteio_id = 1; 
} 

$nr++; 
$var = 'sorteios_'.$nr; 
$$var = array($sorteio_id); 
} 
} 
} 
} 

$result = array_merge($sorteios_1, $sorteios_2, $sorteios_3); 

$occurences = array_count_values($result); 
print_r($occurences); 

} 

回答

0

你可以嘗試創建一個包含執行array_merge的一串代碼所有數組,然後把它傳遞給eval函數(http://it1.php.net/manual/it/function.eval.php)... 事情是這樣的:

$str="\$result=array_merge("; 
for($i=1;$i<=$nr;$i++){ 
    $str.="\$sorteios_$i,"; 
} 
$str=substr($str,0,-1); 
$str.=");"; 
eval($str); 

然後在$導致你有你需要的東西。

0

有沒有理由你不能遞歸合併?

if ($nr > 0) { 
    $result = $sorteios_1; 
    for ($i = 2; $i <= $nr; ++$i) { 
     $result = array_merge($result, ${'sorteios_'.$i}); 
    } 
} else { 
    // you might want to handle this case differently 
    $result = array(); 
} 
相關問題