【问题标题】:convert std object class to comma seperated string将 std 对象类转换为逗号分隔的字符串
【发布时间】:2013-07-03 16:35:36
【问题描述】:

我有一个来自 twitter 的 std 类对象,我想获取 ids 数组值并将它们放在一个 php 变量 $ids 中 $ids = (15761916,30144785,382747195,19399719)

我想象使用 for 循环并使用 phps implode,但我不知道该怎么做。

stdClass Object
(
  [ids] => Array
    (
        [0] => 15761916
        [1] => 30144785
        [2] => 382747195
        [3] => 19399719

    )

  [next_cursor] => 0
  [next_cursor_str] => 0
  [previous_cursor] => 0
  [previous_cursor_str] => 0
) 

【问题讨论】:

  • 你想要的结果是什么?
  • 逗号分隔的字符串,如标题。
  • $ids = (15761916,30144785,382747195,19399719)

标签: php stdclass


【解决方案1】:
$ids = "(" . implode(",", $object->ids) . ")";

【讨论】:

    【解决方案2】:

    最简单的方法,我不知道这是否可行(对不起!),因为我不倾向于使用很多像这样的 stdClass 对象......将使用数组映射......

    $ids = function (stdClass Object $object) {
      return implode (",", $object->ids);
    };
    

    也许是这样的,不完全确定这是否是正确的语法……目前在我的手机上。试一试!

    我按照你的习惯把它变成了一个 lambda 函数,你可以很容易地做到:

    $ids = implode (",", $object->ids);
    

    【讨论】:

      【解决方案3】:

      使用该函数转换成数组

      $vars = get_object_vars ( $Obj );
      print_r ( $vars );
      $ids = implode (",", $vars[ids]);
      

      【讨论】:

      • 希望将数组的值作为逗号分隔的字符串而不是所有变量。
      • @DaGhostmanDimitrov 不用说对不起,在编程领域的讨论一定要搞清楚。
      【解决方案4】:

      作为扩展答案,您有 2 个选项:)

      第一个是实现Serializable Interface,这样做你可以使用序列化函数来获得所需的输出:

      public function serialize() {
          return array_implode(',', $this->ids);
      }
      

      public function __toString() {
          return array_implode(',', $this->ids);
      }
      

      然后用法变成:

      1. 可序列化:

        序列化($object_instance);

      2. __toString:

        打印 $object_instance;

      两者都会给你想要的输出,所以你不需要增加额外的开销来使用函数或在内联脚本中使用array_implode()

      【讨论】:

        猜你喜欢
        • 2019-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-18
        • 2018-08-16
        • 2013-09-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多