代码之家  ›  专栏  ›  技术社区  ›  Gaylord.P

PHP根据对象的值定义数组的键[重复]

php
  •  0
  • Gaylord.P  · 技术社区  · 5 年前

    使用PHP,我有对象列表。每个对象都有 id 字段:

    $myArray = [
        0 => Object{
            'id' => 1,
            'title' => 'My title 1'
        },
        1 => Object{
            'id' => 2,
            'title' => 'My title 2'
        },
        2 => Object{
            'id' => 6,
            'title' => 'My title 6'
        }
    ]
    

    我想从以下位置设置数组键 身份证件 对象 无需额外的foreach . 我想要这个结果:

    $myArray = [
        1 => Object{
            'id' => 1,
            'title' => 'My title 1'
        },
        2 => Object{
            'id' => 2,
            'title' => 'My title 2'
        },
        6 => Object{
            'id' => 6,
            'title' => 'My title 6'
        }
    ]
    

    我认为这是可能的 array_map 但我不知道该怎么做。我尝试了这个,但它返回了子数组:

    $newArray = array_map(function($entry) {
        return [$entry->id => $entry];
    }, $myArray);
    
    // return :
    
    [
        0 => [
            1 => Object{
                'id' => 1,
                'title' => 'My title 1'
            },
        ],
        1 => [
            2 => Object{
                'id' => 2,
                'title' => 'My title 2'
            },
        ],
        2 => [
            6 => Object{
                'id' => 6,
                'title' => 'My title 6'
            }
        ]
    ]
    
    1 回复  |  直到 5 年前
        1
  •  2
  •   user1597430    5 年前
    $myArray = array_column($myArray, null, 'id');
    
        2
  •  0
  •   Moayad .AlMoghrabi Daniel Wichers    5 年前

    试试这个

    array_combine(array_column($myArray, 'id'), $myArray);
    

    这样,您将使ID作为键,并将与ID相关的所有数组作为此索引的值。