PHP:按索引值分隔数组

PHP:按索引值分隔数组,php,arrays,Php,Arrays,我有这样一个数组: [ { "id": "13216", "image_type": "ThumbnailImage", "is_primary": "1" }, { "id": "13217", "image_type": "MediumImage", "is_primary": "1" }, {

我有这样一个数组:

[
        {
          "id": "13216",
          "image_type": "ThumbnailImage",
          "is_primary": "1"
        },
        {
          "id": "13217",
          "image_type": "MediumImage",
          "is_primary": "1"
        },
        {
          "id": "13218",
          "image_type": "LargeImage",
          "is_primary": "1"
        },
        {
          "id": "13219",
          "image_type": "ThumbnailImage",
          "is_primary": "0"
        },
        {
          "id": "13220",
          "image_type": "MediumImage",
          "is_primary": "0"
        },
        {
          "id": "13221",
          "image_type": "LargeImage",
          "is_primary": "0"
        }
]
我想将其转换为:

[
    "ThumbnailImage" => [
            {
                "id": "13216",
                "image_type": "ThumbnailImage",
                "is_primary": "1"
            },
            {
                "id": "13219",
                "image_type": "ThumbnailImage",
                "is_primary": "0"
            },
        ],
        "MediumImage" => [
            {
                "id": "13217",
                "image_type": "MediumImage",
                "is_primary": "1"
            },
            {
                "id": "13220",
                "image_type": "MediumImage",
                "is_primary": "0"
            },
        ],
        "LargeImage" => [
            {
                "id": "13218",
                "image_type": "LargeImage",
                "is_primary": "1"
            }, 
            {
                "id": "13221",
                "image_type": "LargeImage",
                "is_primary": "0"
            }
        ]
]
我正在寻找动态解决方案,其中我可以指定键名,它会根据该索引的值自动隔离数组。例如,在这种情况下,如果我指定索引名image_type,它应该给我提到的输出,如果我指定is_primary,它应该返回索引0和1及其值

最终解决方案:

public function segregateByIndex($array, $segregateKey)
{
        $result = [];
        foreach( $array as $val ) {
            $result[$val[$segregateKey]][] = $val;
        }
        return $result;
}

使用
foreach
可以很容易地解决这个问题,就像

$result = [];
foreach(json_decode($your_json,true) as $key => $val){
    $result[$val['image_type']][] = $val;
}
print_r($result);

你有3k代表,我仍然需要问,到目前为止你尝试了什么?关于什么是php标记,我只能看到JSON?这是为了理解数据结构而显示的数组。我知道它的语法类似于JSON格式,而且有时候人们不知道从哪里开始。“我试过很多次搜索,但都找不到类似的东西。”斯维德曼在OP的辩护中说,仅仅因为他的代表分数高并不意味着他什么都知道。他可能是其他语言方面的专家,但不是JSON或数组方面的专家。不过,我同意他至少需要提交他已经尝试过的东西。@CodeGodie,如果有人弄错了,很抱歉,我只想指出“我仍然需要问一下,到目前为止你已经尝试了什么”。我对这个问题本身一点问题都没有,只是缺少了一些努力。你还期待着什么吗。我很确定这会起作用是的,我知道这就是为什么我说我很确定这会起作用我尝试过更改密钥名称它不起作用,但我制作了动态密钥。这就是为什么我再次接受它为什么要将它更改为多维数组而不是对象数组?如果未使用
$key
变量,为什么要使用它呢?数组的速度更快,在回答时我想到了另一个答案,但最终得到了不同的@CodeGodie