首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码点火器中PHP数组的排序结果

代码点火器中PHP数组的排序结果
EN

Stack Overflow用户
提问于 2016-09-11 00:28:07
回答 3查看 1.8K关注 0票数 0

我在PHP中有一个代表数据库中主键(“pro_id”)的数字数组,我通过CodeIgniter中的模型发送这些数字,只得到10个特定的行。

这个数字可能会改变,但现在我将用这个来说明我的观点。

这是一个数组:

代码语言:javascript
复制
Array ( [0] => 5 [1] => 3 [2] => 8 [3] => 12 [4] => 30 [5] => 29 [6] => 26 [7] => 28 [8] => 4 [9] => 7 ) 

这就是我寄给它的模型:

代码语言:javascript
复制
public function get_flores_home($array_select) {
    $this->db->where_in('pro_id', $array_select);
    return $query->result_array();
}

但是,希望按照数组的相同顺序对结果进行排序。

这就是我目前得到的结果:

代码语言:javascript
复制
Array(
    [0] => Array(
        [pro_id] => 3[pro_nombre] => Ashley[pro_descripcion] => 24RosasBaseDeCerámica[pro_precio] => 480[pro_es_disponible] => 1[pro_imagen] => 0edb4 - ashley . jpg
    ) [1] => Array(
        [pro_id] => 4[pro_nombre] => Abril[pro_descripcion] => 6RosasRojas, LilisBlancas, Alstroemerias[pro_precio] => 320[pro_es_disponible] => 1[pro_imagen] => 3f9f1 - abril . jpg
    ) [2] => Array(
        [pro_id] => 5[pro_nombre] => Amira[pro_descripcion] => 12Rosas . Alstroemerias . MallaBlanca . Moño . [pro_precio] => 280[pro_es_disponible] => 1[pro_imagen] => 81e6c - amira . jpg
    ) [3] => Array(
        [pro_id] => 7[pro_nombre] => Betty[pro_descripcion] => 24Rosas . Alcatraces . Alstroemerias . Moño[pro_precio] => 650[pro_es_disponible] => 1[pro_imagen] => 57219 - betty . jpg
    ) [4] => Array(
        [pro_id] => 8[pro_nombre] => Brittany[pro_descripcion] => 24RosasRojas . MallaElegante . Moño[pro_precio] => 450[pro_es_disponible] => 1[pro_imagen] => 942cf - brittany . jpg
    ) [5] => Array(
        [pro_id] => 12[pro_nombre] => Diana[pro_descripcion] => 24Rosas . LilisBlancas . BaseDeCeramica . [pro_precio] => 490[pro_es_disponible] => 1[pro_imagen] => a9bb8 - diana . jpg
    ) [6] => Array(
        [pro_id] => 26[pro_nombre] => Katy[pro_descripcion] => 48Rosas . LilisAmarillas . Lisianthusmorado . CampanitaDeIrlanda . [pro_precio] => 1200[pro_es_disponible] => 1[pro_imagen] => 478a6 - katy . jpg
    ) [7] => Array(
        [pro_id] => 28[pro_nombre] => Lucia[pro_descripcion] => 24Rosas . 10Tulipanes . CampanitaDeIrlanda . Stargazer . BaseDeCeramica . [pro_precio] => 900[pro_es_disponible] => 1[pro_imagen] => f0829 - lucia . jpg
    ) [8] => Array(
        [pro_id] => 29[pro_nombre] => Magdalena[pro_descripcion] => 24Rosas . LilisBlancas . BaseDeCeramica . [pro_precio] => 590[pro_es_disponible] => 1[pro_imagen] => 29403 - magdalena . jpg
    ) [9] => Array(
        [pro_id] => 30[pro_nombre] => Marisol[pro_descripcion] => 24Rosas . 5Lilis . Alstroemerias . Canasta . [pro_precio] => 750[pro_es_disponible] => 1[pro_imagen] => 1eb20 - marisol . jpg
    )
)

这是我希望我的结果按如下方式排序的数组:

代码语言:javascript
复制
Array ( [0] => 5 [1] => 3 [2] => 8 [3] => 12 [4] => 30 [5] => 29 [6] => 26 [7] => 28 [8] => 4 [9] => 7 ) 

这是按所需顺序得出的结果:

代码语言:javascript
复制
Array(
    [0] => Array(
        [pro_id] => 5[pro_nombre] => Amira[pro_descripcion] => 12Rosas . Alstroemerias . MallaBlanca . Moño . [pro_precio] => 280[pro_es_disponible] => 1[pro_imagen] => 81e6c - amira . jpg
    ) [1] => Array(
        [pro_id] => 3[pro_nombre] => Ashley[pro_descripcion] => 24RosasBaseDeCerámica[pro_precio] => 480[pro_es_disponible] => 1[pro_imagen] => 0edb4 - ashley . jpg
    ) [2] => Array(
        [pro_id] => 8[pro_nombre] => Brittany[pro_descripcion] => 24RosasRojas . MallaElegante . Moño[pro_precio] => 450[pro_es_disponible] => 1[pro_imagen] => 942cf - brittany . jpg
    ) [3] => Array(
        [pro_id] => 12[pro_nombre] => Diana[pro_descripcion] => 24Rosas . LilisBlancas . BaseDeCeramica . [pro_precio] => 490[pro_es_disponible] => 1[pro_imagen] => a9bb8 - diana . jpg
    ) [4] => Array(
        [pro_id] => 30[pro_nombre] => Marisol[pro_descripcion] => 24Rosas . 5Lilis . Alstroemerias . Canasta . [pro_precio] => 750[pro_es_disponible] => 1[pro_imagen] => 1eb20 - marisol . jpg
    ) [5] => Array(
        [pro_id] => 29[pro_nombre] => Magdalena[pro_descripcion] => 24Rosas . LilisBlancas . BaseDeCeramica . [pro_precio] => 590[pro_es_disponible] => 1[pro_imagen] => 29403 - magdalena . jpg
    ) [6] => Array(
        [pro_id] => 26[pro_nombre] => Katy[pro_descripcion] => 48Rosas . LilisAmarillas . Lisianthusmorado . CampanitaDeIrlanda . [pro_precio] => 1200[pro_es_disponible] => 1[pro_imagen] => 478a6 - katy . jpg
    ) [7] => Array(
        [pro_id] => 28[pro_nombre] => Lucia[pro_descripcion] => 24Rosas . 10Tulipanes . CampanitaDeIrlanda . Stargazer . BaseDeCeramica . [pro_precio] => 900[pro_es_disponible] => 1[pro_imagen] => f0829 - lucia . jpg
    ) [8] => Array(
        [pro_id] => 4[pro_nombre] => Abril[pro_descripcion] => 6RosasRojas, LilisBlancas, Alstroemerias[pro_precio] => 320[pro_es_disponible] => 1[pro_imagen] => 3f9f1 - abril . jpg
    ) [9] => Array(
        [pro_id] => 7[pro_nombre] => Betty[pro_descripcion] => 24Rosas . Alcatraces . Alstroemerias . Moño[pro_precio] => 650[pro_es_disponible] => 1[pro_imagen] => 57219 - betty . jpg
    )
)

正如您所看到的,这个顺序现在基于我在"where_in“方法中使用的相同的数组。我怎样才能做到这一点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-09-11 01:00:27

免责声明:我不知道如何使用CodeIgniter,但如果您想按某些自定义订单(如您的订单)订购,这就是您要做的:

代码语言:javascript
复制
SELECT * FROM your_table WHERE id IN 
(5, 3, 8, 12, 30, 29, 26, 28, 4, 7) 
ORDER BY FIELD(id, 5, 3, 8, 12, 30, 29, 26, 28, 4, 7)

现在,如果您知道如何在CodeIgniter中调整它从而生成这样的查询,那么您的问题就可以通过MySQL解决了。

票数 2
EN

Stack Overflow用户

发布于 2016-09-11 00:54:47

由于它是一个小数据集,所以在控制器中操作数组,或者在您想要的情况下在视图中操作它。只需将order数组作为$order传递,结果集作为$results传递到视图:

代码语言:javascript
复制
foreach ($order as $wantedID) {
    foreach ($results as $result) {
       if($result['id'] == $wantedID) {
          // output your result
          ...
       }
    }
 }
票数 1
EN

Stack Overflow用户

发布于 2022-03-31 11:35:06

代码语言:javascript
复制
$this->db->where_in('id',$arrayIds);
$arrayList = implode(',',$arrayIds);
$this->db->order_by('FIELD(id,'.$arrayList.")");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39431785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档