php - 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 参数,所以输出看起来像这样;name
Items
- /例子/
- /示例/位置
- /示例/位置/巴黎
请注意,它并不总是[1]
在数组中的位置,但name
值将始终是Items
.
我怎样才能做到这一点?
解决方案
您可以使用array_walk
,向其传递一个检查name
密钥是否存在的函数,Items
如果是,则返回密钥dirname
的link
:
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
)
)
推荐阅读
- android - AWS Chime(webrtc 音频)+ Oculus Quest 2 - 即使 getStreamVolume 显示不同的值,setStreamVolume 也不会改变实际音量
- r - 将 tidymodels 配方包装到函数中
- html - 如何从视图模型创建警报
- codeigniter - 我正在使用 Vonage (Tokbox) API 进行视频通话。我已生成会话和令牌,但未创建流 id
- javascript - 错误:本地存储缺少 ID 令牌,请在更改当前密码 AWS amazon-cognito-identity-js 时进行身份验证
- c++ - 无法为 ros c++ 安装 opencv
- android - Android Jetpack Compose:是否可以仅为调试构建类型启用 compose?
- r - html表中的R rmarkdown外部图像缩略图
- node.js - 为什么会收到这个 npm ERR!代码 ENOTFOUND
- c++ - Qt 和 OpenGL:使用 addShaderFromSourceFile 而不是 addShaderFromSourceCode 时,片段着色器不会编译