使用php将子节点添加到对象中的特定索引

时间:2010-07-08 13:30:53

标签: php object

我有一个对象,我有一个新值,我需要添加到这个对象,但不仅仅是到它的结尾,这将是没有问题的完成。我需要做的是将此值添加到特定索引上的新节点。

好的,这就是对象。

[object]=>{ 
  ["a"]=> "value" 
  ["b"]=> "value" 
  ["c"]=> "value"
  ["d"]=> "value"
} 

然后我有第五个值,我现在需要添加到索引1,或者在此示例中命名为“b”。像这样。

[object]=>{ 
  ["a"]=> "value"
  ["e"]=> "fifth value"
  ["b"]=> "value" 
  ["c"]=> "value"
  ["d"]=> "value"
} 

所以问题仍然存在,是否有一种聪明的方法可以做到这一点,还是我必须将它们拆分并将它们组合成数组并将它们合并为数组然后将它们分配给一个新对象,明确告诉它是一个对象? / p>

喜欢这个。

$object = (object)array_merge((array)$first, (array)$second);

我觉得必须有更好的方法来处理这个,只有对象。

感谢您的时间。

2 个答案:

答案 0 :(得分:2)

你在做什么需要这个:

[object]=>{ 
  ["a"]=> "value"
  ["e"]=> "fifth value"
  ["b"]=> "value" 
  ["c"]=> "value"
  ["d"]=> "value"
} 

与此不同:

[object]=>{ 
  ["a"]=> "value"
  ["b"]=> "value" 
  ["c"]=> "value"
  ["d"]=> "value"
  ["e"]=> "fifth value"
} 

如果你需要他们不同,你使用OOP是错误的。

编辑:什么阻止你使用数组?

答案 1 :(得分:1)

对象根本就没有索引,它们有属性,而且$ obj->属性总是$ obj->属性 - 没有排序,没有类似的索引。

你需要的是(通常)一个数字索引的数组,而不是一个对象,而不是一个关联数组 - 如果你坚持你需要一个alpha排序的关联数组(字母键而不是数字键),那么你可以使用{{ 3}}来处理这个特殊问题。

$array = array( 
  "a" => "value",
  "e" => "fifth value",
  "b" => "value",
  "c" => "value",
  "d" => "value",
);
ksort($array);
print_r($array);

注意如果出于某种原因需要通过执行$ obj =(object)$ array,您可以随时将其转换为对象;排序后