【问题标题】:convert object to array and retrieve in php将对象转换为数组并在 php 中检索
【发布时间】:2018-08-16 11:25:20
【问题描述】:

我有如下结果。

   stdClass Object
    (
      [Test_Result] => stdClass Object
        (
          [Test] => Array
            (
                [0] => stdClass Object
                    (

                        [name] => test1
                    )

                [1] => stdClass Object
                    (

                        [name] => test2
                    )

                [2] => stdClass Object
                    (

                        [name] => test3
                    )

                [3] => stdClass Object
                    (

                        [name] => test4
                    )

                [4] => stdClass Object
                    (

                        [name] => test5
                    )

            )

      )

 )

我正在尝试检索名称并将它们添加为选择标签的选项值。

我期待如下

 <select id="names" name="names" class="required-entry select">
                <option value="" selected="selected">Please select...</option>
                <option value="test1">test1</option>
                <option value="test2">test2</option>
                <option value="test3">test3</option>
                <option value="test4">test4</option>
                <option value="test5">test5</option>
            </select>

我如何在 PHP 中做到这一点?请任何人建议我,如何从上述结果中检索每个值?

【问题讨论】:

  • 你的预期输出是什么?它是什么样子的?
  • 你可以简单地使用(array) $object;转换成Cast Array
  • 请检查我更新的问题
  • 你可以在没有print_r/var_dump的情况下发布你的std对象吗?

标签: php arrays object foreach


【解决方案1】:

$object->Test_Result->Test 是一个只有 name 属性的对象数组。如果您只想要该名称属性,请在该数组上运行一个映射以将该数组转换为仅名称。

$names = array_map(function($item) {
    return $item->name;
}, $object->Test_Result->Test);

在此处阅读更多关于array_map 的信息。

【讨论】:

  • 自己尝试一下,如果遇到困难,请告诉我。
【解决方案2】:

如果你的对象是$obj,你可以这样做:

echo '<select id="names" name="names" class="required-entry select">';
echo '<option value="" selected="selected">Please select...</option>';
foreach($obj->Test_Result->Test as $key => $value){
    echo '<option value="'.$value->name.'">'.$value->name.'</option>';
}
echo '</select>';

【讨论】:

  • 这可行,但您可能需要清理代码。没有理由在周围的 HTML 上使用 PHP/echo,也不需要 $key。
猜你喜欢
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 2013-10-29
  • 2019-09-18
  • 2022-11-22
  • 1970-01-01
相关资源
最近更新 更多