【问题标题】:mysql/php - merge multiple arrays from mysql output in while statementmysql/php - 在while语句中合并来自mysql输出的多个数组
【发布时间】:2014-12-18 06:55:59
【问题描述】:

我需要从我拥有的 mysql 数据库中合并许多数组。数组的数量可以变化。我正在将数据序列化到数据库中并在输出时对其进行反序列化。我被难住的地方是尝试使用array_merge,但不确定如何正确地将数据输入其中。

比如我有

$sql_get_votes_data = "SELECT * FROM algo_users WHERE data LIKE '%$movie_id%'";
$result_get_votes_data = mysql_query($sql_get_votes_data);
$final_array = array();
while($row_get_votes_data = mysql_fetch_array($result_get_votes_data)) {
    $final_array[] = unserialize($row_get_votes_data['data']);
}

最终我需要能够像这样进行独特的合并。

array_unique(array_merge($final_array1,$final_array2), SORT_REGULAR);

但由于我必须将每个数组放入一个单独的变量中才能传递给array_merge,我不知道如何从 mysql 调用中做到这一点。

任何帮助都会很棒。

【问题讨论】:

  • 是否可以在查询中合并它们,比如加入等?

标签: php mysql array-merge


【解决方案1】:

为什么不在循环中合并每个新数组?

$mergedArray=array();
while($row_get_votes_data = mysql_fetch_array($result_get_votes_data)) {
    $final_array = unserialize($row_get_votes_data['data']);
    $mergedArray=array_merge($mergedArray,$final_array);
}
array_unique($mergedArray, SORT_REGULAR);

或者,如果您需要跟踪各个数组:

$mergedArray=array();
$i=0;
while($row_get_votes_data = mysql_fetch_array($result_get_votes_data)) {
    $final_array[$i] = unserialize($row_get_votes_data['data']);
    $mergedArray=array_merge($mergedArray,$final_array[$i]);
    $i++
}
array_unique($mergedArray, SORT_REGULAR);

编辑:我首先了解到您只是希望将所有数组合并到一个数组中。正如我现在理解的那样,上面编辑的答案现在还删除了重复的条目。

【讨论】:

  • 此外,不要再使用 mysql_* 函数(不安全且不再支持)。查看 mysqli_* 函数或 pdo 库文档。
【解决方案2】:

你可以例如为此使用call_user_func_array

<?php
$myarrs = array();

$result = call_user_func_array( 'array_merge', $myarrs); var_dump($result);

$myarrs[] = array(1,2,3);
$result = call_user_func_array( 'array_merge', $myarrs); var_dump($result);

$myarrs[] = array(4,5,6);
$result = call_user_func_array( 'array_merge', $myarrs); var_dump($result);

$myarrs[] = array(7,8,9);
$result = call_user_func_array( 'array_merge', $myarrs); var_dump($result);

但也许重组数据库更可行,而不是将序列化的数组而是单个字段放入表中o数据库可以进行排序/过滤/合并。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-18
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 2016-04-29
    • 2012-10-09
    • 2016-07-10
    • 1970-01-01
    相关资源
    最近更新 更多