更改由多个对象组成的数组的值

时间:2017-10-22 22:07:15

标签: php arrays

我想替换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)为什么他给我一个通知,而我认为我没有违反类型惯例?

1 个答案:

答案 0 :(得分:0)

然而,你的代码在我的最终工作正常..

我认为问题出在您的$result变量中。每次迭代,您都会覆盖数组中的最后一个写入值。

您必须直接使用$result变量,或将$result替换为$myArr[$i]->doc->path。这样你可以使用$ myArr和重写的值。