程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

按定义的值列表对对象数组进行排序[重复]

发布于2023-09-17 19:27     阅读(1012)     评论(0)     点赞(0)     收藏(5)


好吧,我确信这已经在某个地方得到了回答,我为发布这样一个基本问题而道歉,但我似乎无法在任何地方找到答案......我只是第一次将我的大脚趾浸入 php大部分时间都花在 Javascript 上,所以对我好一点:-)

我有一个结构如下的对象数组:

[
  {
    title: 'one',
    type: 'cat'
  },
  {
    title: 'two',
    type: 'dog'
  },
  {
    title: 'three',
    type: 'snake'
  },
  {
    title: 'four',
    type: 'dog'
  }
]

我想按顺序订购它们,['dog', 'snake', 'cat]这样我就得到:

[
  {
    title: 'two',
    type: 'dog'
  }
  {
    title: 'four',
    type: 'dog'
  },
  {
    title: 'three',
    type: 'snake'
  },
  {
    title: 'one',
    type: 'cat'
  }
]

我该怎么做呢?


解决方案


PHP代码演示

<?php
ini_set("display_errors", 1);
$json ='[
  {
    "title": "one",
    "type": "cat"
  },
  {
    "title": "two",
    "type": "dog"
  },
  {
    "title": "three",
    "type": "snake"
  },
  {
    "title": "four",
    "type": "dog"
  }
]';
$dataArray=json_decode($json,true);
$sortFormat=['dog', 'snake', 'cat'];
$result=array();
while(count($dataArray)>0)
{
    foreach($sortFormat as $object)
    {
        foreach($dataArray as $key => $objectData)
        {
            if($objectData["type"]==$object)
            {
                $result[]=$objectData;
                unset($dataArray[$key]);
            }
        }
    }
}
print_r($result);

输出:

Array
(
    [0] => Array
        (
            [title] => two
            [type] => dog
        )

    [1] => Array
        (
            [title] => four
            [type] => dog
        )

    [2] => Array
        (
            [title] => three
            [type] => snake
        )

    [3] => Array
        (
            [title] => one
            [type] => cat
        )

)


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.phpheidong.com/blog/article/548829/4a8502e3b436abc684da/

来源:php黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

0 0
收藏该文
已收藏

评论内容:(最多支持255个字符)