【问题标题】:array_merge() How can I add a 'range' of an array namearray_merge() 如何添加数组名称的“范围”
【发布时间】:2014-09-26 20:18:34
【问题描述】:

我有一个 $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);

}

【问题讨论】:

    标签: php arrays array-merge


    【解决方案1】:

    您可以尝试创建一个字符串,其中包含执行所有数组的 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 你有你需要的东西。

    【讨论】:

      【解决方案2】:

      你不能递归合并有什么原因吗?

      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();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-21
        • 1970-01-01
        • 1970-01-01
        • 2018-03-13
        • 1970-01-01
        相关资源
        最近更新 更多