gpt4 book ai didi

php - 使用动态键字符串检索对象变量

转载 作者:行者123 更新时间:2023-12-02 21:59:02 25 4
gpt4 key购买 nike

我有一个 PHP 对象,其属性名为“required”。这个“必填”字段是一个嵌套数组。我想使用动态字符串(用于属性名称和数组索引)从此对象中检索所需的键。我怎样才能实现这一目标?

$myObj = new StdClass;
$myObj->required = array(
"name_required" => 1,
"courses" => array(
"course_name_required" => 1,
"lessons_required" => 1,
"lessons" => array(
"lesson_name_required" => 1,
"lesson_file_required" => 1,
"is_viewed_required" => 1,
),
),

);
// Desired Key I want to retrieve using dynamic strings.
$desiredKeyArrayPart = "[courses][lessons][lesson_name_required]";
$desiredKeyAttributePart = "required";
$desiredKey = $desiredKeyAttributePart . $desiredKeyArrayPart;

// Get the value (Should return 1)
$desiredValue = $myObj->$desiredKey;

我希望返回值 1,但这会引发运行时错误: PHP 注意:未定义的属性:stdClass::$required[courses][lessons][lesson_name_required]

最佳答案

我假设您知道如何正确访问对象/数组,并且正在尝试动态生成所需值的路径。以下代码将允许您传递一个字符串,并通过一个对象过滤该字符串中的多个键。

<?php
$myObj = new StdClass;
$myObj->required = array(
"name_required" => 1,
"courses" => array(
"course_name_required" => 1,
"lessons_required" => 1,
"lessons" => array(
"lesson_name_required" => 1,
"lesson_file_required" => 1,
"is_viewed_required" => 1,
),
),
);
// Desired Key I want to retrieve using dynamic strings.
$desiredKeyArrayPart = "[courses][lessons][lesson_name_required]";
$desiredKeyAttributePart = "required";

// Set our searchObject to $myObj->required using Variable Variables
$searchObject = $myObj->$desiredKeyAttributePart;
// Match all of the keys in our string
preg_match_all('/\[(.*?)\]/', $desiredKeyArrayPart, $keyMap);
// Foreach key that we found
foreach ($keyMap[1] as $key) {
// Change our $searchObject to the new key's value
$searchObject = $searchObject[$key];
}
// We found our object
var_dump($searchObject);

关于php - 使用动态键字符串检索对象变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17243268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com