我想替换path
数组中的值,我已经停留了一段时间。所以这就是我得到的。
我的阵列:
// $myArr
Array
(
[0] => stdClass Object
(
[doc] => stdClass Object
(
[path] => Array
(
[0] => Bob
[1] => pictures
[2] => food
)
)
)
[1] => stdClass Object
(
[doc] => stdClass Object
(
[path] => Array
(
[0] => Alice
[1] => pictures
[2] => vacations
[3] => rome
)
)
)
)
PHP代码:
for ($i=0; $i < count($myArr) ; $i++) {
$search = array($old_name); // pictures
$replace = array($new_name); // test
$result = str_replace($search, $replace, $myArr[$i]->doc->path);
}
结果:
它只更改了一个数组,并在我的str_replace
行上给出了提示。 $search
和$replace
都属于array
类型,我知道我需要通过数组表示法访问数组中的元素 - &gt; $ item ['price']例如。这不是错的吗?
注意:尝试在...中获取非对象的属性
Array
(
[0] => Bob
[1] => test
[2] => food
)
1)你明白为什么他只修改最后一个对象可以这么说吗?
2)为什么他给我一个通知,而我认为我没有违反类型惯例?
答案 0 :(得分:0)
然而,你的代码在我的最终工作正常..
我认为问题出在您的$result
变量中。每次迭代,您都会覆盖数组中的最后一个写入值。
您必须直接使用$result
变量,或将$result
替换为$myArr[$i]->doc->path
。这样你可以使用$ myArr和重写的值。