用另一个值替换数组键

时间:2015-04-16 13:10:27

标签: php arrays

我有一个看起来像这样的数组:

[0] => stdClass Object
    (
        [id] => 152
        [type_id] => 5
        [name] => test 1
    )

[1] => stdClass Object
    (
        [id] => 153
        [type_id] => 8
        [name] => test 2
    )

[2] => stdClass Object
    (
        [id] => 154
        [type_id] => 13
        [name] => test 3
    )

有什么方法可以将它转换成下面的数组吗?

[5] => stdClass Object
    (
        [id] => 152
        [name] => test 1
    )

[8] => stdClass Object
    (
        [id] => 153
        [name] => test 2
    )

[13] => stdClass Object
    (
        [id] => 154
        [name] => test 3
    )

基本上我用type_id值更改了数组键。

3 个答案:

答案 0 :(得分:3)

您应该可以取消设置stdClass的属性,如下所示:

$newObject = array();
foreach ($oldObject as $object) {
    $typeID = $object->type_id;
    $newObject[$typeID] = $object;
    unset($newObject[$typeID]->type_id);
}

这会遍历您的stdClass个对象数组,并将该条目保存到一个新数组中。之后,属性type_id将被删除。

答案 1 :(得分:2)

将其传递给返回新数组的函数:

function convert($arr)
{
    $new_arr = array();
    for ($i = 0; $i < count($arr); $i++)
    {
        $id = $arr[$i]['type_id'];
        unset($arr[$i]['type_id']);
        $new_arr[$id] = $arr[$i];
    }
    return $new_arr;
}

答案 2 :(得分:2)