Php 如何像我的示例一样排列MySQL数据库中的项目数据

Php 如何像我的示例一样排列MySQL数据库中的项目数据,php,mysql,Php,Mysql,如何在php中以任何方式排列下面的列表 实际上,我们将从MySQL数据库选择输出中获取项数组列表 比如说, 如果我们得到如下数组列表 $item_arr = array("102","101","103","103","101","101","102","103","102"); 我们必须像下面这样安排 101 102 103 101 102 103 101 102 103 $item_arr = array("102","103","102","101","103","101","103

如何在php中以任何方式排列下面的列表

实际上,我们将从MySQL数据库选择输出中获取项数组列表

比如说,

如果我们得到如下数组列表

$item_arr = array("102","101","103","103","101","101","102","103","102");
我们必须像下面这样安排

101 102 103 101 102 103 101 102 103 
$item_arr = array("102","103","102","101","103","101","103","103","101");
101 102 103 101 103 103 101 102 103
$item_arr = array("103","101","102","103","102","102","102","103","102");
101 102 103 102 102 103 102 102 103

$rtr_item_arr = arrange_item($item_arr);
function arrange_item($results)
{
    $last_val="";
    $unique_only = array();
    $additional = array();
    foreach($results as $val):

        if(in_array($val, $unique_only)):
            $additional[] = $val;
        endif;

        if($val != $last_val  && !in_array($val,$unique_only)):
            echo $val." ";
            $unique_only[] = $val;
        endif; 
        $last_val = $val;

    endforeach;

    $additional = array_filter($additional);
    if(!empty($additional)):
        arrange_item($additional);
    endif;
}
同样,如果数组列表如下所示

101 102 103 101 102 103 101 102 103 
$item_arr = array("102","103","102","101","103","101","103","103","101");
101 102 103 101 103 103 101 102 103
$item_arr = array("103","101","102","103","102","102","102","103","102");
101 102 103 102 102 103 102 102 103

$rtr_item_arr = arrange_item($item_arr);
function arrange_item($results)
{
    $last_val="";
    $unique_only = array();
    $additional = array();
    foreach($results as $val):

        if(in_array($val, $unique_only)):
            $additional[] = $val;
        endif;

        if($val != $last_val  && !in_array($val,$unique_only)):
            echo $val." ";
            $unique_only[] = $val;
        endif; 
        $last_val = $val;

    endforeach;

    $additional = array_filter($additional);
    if(!empty($additional)):
        arrange_item($additional);
    endif;
}
我们必须像下面这样安排

101 102 103 101 102 103 101 102 103 
$item_arr = array("102","103","102","101","103","101","103","103","101");
101 102 103 101 103 103 101 102 103
$item_arr = array("103","101","102","103","102","102","102","103","102");
101 102 103 102 102 103 102 102 103

$rtr_item_arr = arrange_item($item_arr);
function arrange_item($results)
{
    $last_val="";
    $unique_only = array();
    $additional = array();
    foreach($results as $val):

        if(in_array($val, $unique_only)):
            $additional[] = $val;
        endif;

        if($val != $last_val  && !in_array($val,$unique_only)):
            echo $val." ";
            $unique_only[] = $val;
        endif; 
        $last_val = $val;

    endforeach;

    $additional = array_filter($additional);
    if(!empty($additional)):
        arrange_item($additional);
    endif;
}
同样,如果数组列表如下所示

101 102 103 101 102 103 101 102 103 
$item_arr = array("102","103","102","101","103","101","103","103","101");
101 102 103 101 103 103 101 102 103
$item_arr = array("103","101","102","103","102","102","102","103","102");
101 102 103 102 102 103 102 102 103

$rtr_item_arr = arrange_item($item_arr);
function arrange_item($results)
{
    $last_val="";
    $unique_only = array();
    $additional = array();
    foreach($results as $val):

        if(in_array($val, $unique_only)):
            $additional[] = $val;
        endif;

        if($val != $last_val  && !in_array($val,$unique_only)):
            echo $val." ";
            $unique_only[] = $val;
        endif; 
        $last_val = $val;

    endforeach;

    $additional = array_filter($additional);
    if(!empty($additional)):
        arrange_item($additional);
    endif;
}
我们必须像下面这样安排

101 102 103 101 102 103 101 102 103 
$item_arr = array("102","103","102","101","103","101","103","103","101");
101 102 103 101 103 103 101 102 103
$item_arr = array("103","101","102","103","102","102","102","103","102");
101 102 103 102 102 103 102 102 103

$rtr_item_arr = arrange_item($item_arr);
function arrange_item($results)
{
    $last_val="";
    $unique_only = array();
    $additional = array();
    foreach($results as $val):

        if(in_array($val, $unique_only)):
            $additional[] = $val;
        endif;

        if($val != $last_val  && !in_array($val,$unique_only)):
            echo $val." ";
            $unique_only[] = $val;
        endif; 
        $last_val = $val;

    endforeach;

    $additional = array_filter($additional);
    if(!empty($additional)):
        arrange_item($additional);
    endif;
}
如何安排以保持相似性另一方面,如何很好地安排


有什么建议吗

看起来您在重复101、102、103的模式,不管它从数据库中输出的顺序是什么。 我没有看到您的SQL发布在这里,但您可以按101、102、103字段分组,然后按101102103字段计算每个字段的实例数,然后创建关联数组:

$item_arr = array(101=>count of 101,102=>count of 102,...)

然后在PHP中,使用从0到最高计数的循环将它们排列在另一个数组中。每次通过循环时,如果值大于0,则将每个键添加到新数组中,并从每个键-值对的值中减去1。

请指定您的排列逻辑,我认为您不会找到任何简单的答案。您基本上需要回答@Passerby提出的问题,然后思考如何编写代码来实现该逻辑。如果你不能简单地解释你的排序逻辑,你就没有办法去编码。是的,我在你的例子中找不到任何排序模式,这是一个非常奇怪的问题:我在你的代码中看到的唯一模式是你考虑一个3块元素,对它们进行排序,然后再安排接下来的3块,如果在下一个3块中遗漏了一个元素,则该元素未从另一个元素块中考虑。我相信这种排序的情况是非常罕见的,如果你想排列数据块并在数组中迭代,然后按预期的大小识别数据块,并使用排序方法对特定的数据块进行排序。有点像加密问题,我不给出SQL,因为它保存在数组中。项目数组值将为9或大于9。安排的条件如下,1号相同的数字不会是一个接一个的,也不会是顺序的。例如:101 101,但如果任何数字更多,则可以是顺序的。第二,排列每个数字的比例。有什么需要帮忙的吗?