我有一个$ nr变量,它是我在上一个函数中创建的具有相同名称的数组的数量,如下所示:
$var = 'sorteios_'.$nr;
$$var = array($sorteio_id);
我在While函数中有它,因此创建了类似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 :(得分: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);
然后在$ result中你有你需要的东西。
答案 1 :(得分: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();
}