首页 > 解决方案 > PHP 编辑 stdClass 对象的值

问题描述

我有一个称为返回多个值的数组$list,我正在循环并显示这些值。我需要编辑其中一个原始值。

这是结果;

print("<pre>".print_r($list,true)."</pre>");

Array
(
    [0] => stdClass Object
        (
            [name] => Home
            [link] => /example/
        )

    [1] => stdClass Object
        (
            [name] => Items
            [link] => /example/locations/items   <-- I want to edit this value
        )

    [2] => stdClass Object
        (
            [name] => Paris
            [link] => /example/locations/paris
        )

)

下面的代码;

foreach ($list as $key => $item) {
    echo $item->link;
}

生产;

如果键是,我需要编辑link值。我本质上想删除最后一个 URL 参数,所以输出看起来像这样;nameItems

请注意,它并不总是[1]在数组中的位置,但name值将始终是Items.

我怎样才能做到这一点?

标签: php

解决方案


您可以使用array_walk,向其传递一个检查name密钥是否存在的函数,Items如果是,则返回密钥dirnamelink

array_walk($list, function (&$v) { if ($v->name == 'Items') $v->link = dirname($v->link); });

输出:

Array
(
    [0] => stdClass Object
        (
            [name] => Home
            [link] => /example/
        )    
    [1] => stdClass Object
        (
            [name] => Items
            [link] => /example/locations
        )    
    [2] => stdClass Object
        (
            [name] => Paris
            [link] => /example/locations/paris
        )    
)

3v4l.org 上的演示


推荐阅读