如何在PHP中的对象中间插入项?

时间:2011-10-13 19:32:46

标签: php arrays oop object insert

如果我有一个类似下面的stdClass对象,它有三个带非数字键的数组,那么在my-account和settings之间将另一个项目插入对象的最佳方法是什么?

[menu1] => stdClass Object
    (
        [my-account] => Array
            (
                [title] => 'My Account'
                )
        [settings] => Array
            (
                [title] => 'Settings'
                )
        [payments] => Array
            (
                [title] => 'Payments'
                )
)

3 个答案:

答案 0 :(得分:2)

没有这个功能。你必须自己做并重建你的对象

http://sandbox.phpcode.eu/g/fba96/3

<?php
function insert_after($var, $key, $value, $after){
    $new_object = array();
    foreach((array) $var as $k => $v){
       $new_object[$k] = $v;
       if ($after == $k){
           $new_object[$key] = $value;
       }
    }
    $new_object = (object) $new_object;
    return $new_object;
}

$var = insert_after($var, 'new dummy var between', array('title' => 'value'), 'my-account');

答案 1 :(得分:2)

添加您的项目,然后删除并重新添加其后的项目:

$menu1->newitem = array('title'=>'Title');
$settings = $menu1->settings;

unset($menu1->settings);
$menu1->settings = $settings;
unset($settings);

unset($menu1->payments);
$menu1->payments = $payments;
unset($payments);

答案 2 :(得分:2)

为此创建自己的类,其中包含添加和删除项及其属性的函数。然后使用一些函数,如@genesis提供。