【问题标题】:how to convert an object into an array in a specific format in PHP如何在PHP中将对象转换为特定格式的数组
【发布时间】:2018-02-28 09:13:28
【问题描述】:

我有一个类似的 JSON 对象

[{"schedule_time_id":1},{"schedule_time_id":2}]

我想把这个JSON对象转换成如下格式

[1,2]

我已经使用(array) $object 进行了转换,但没有得到目标格式。

【问题讨论】:

  • 我假设这是一个 JSON 字符串,您开始使用它吗?
  • 编程语言是通用工具,旨在帮助您完成特定任务。他们不会读懂你的想法,他们不会在所有可能的数据结构之间进行转换。为了解决这个问题,有json_decodeforeach/array_map。试试这些,如果您需要更多帮助,请回来。
  • 将JSON转成数组然后使用array_values
  • @RiggsFolly...对...我已经编辑过了
  • @JigarShah 使用您的解决方案的结果将与解码json字符串完全相同..

标签: php arrays object


【解决方案1】:

有很多方法可以实现这一目标。其中之一是在解码的 json 上使用数组映射。

$result = array_map(function ($item) {
    return $item->schedule_time_id;
}, json_decode($json));

【讨论】:

  • 我正要发布这个解决方案;尽管我使用json_decode 的第二个参数将其设置为true;)
  • 不使用第二个参数是一种微优化.. 但使用它会得到相同的结果
  • @Matei Mihai ...你的也是正确的。但是埃迪的那个更详细,更容易理解……所以我接受他的回答。谢谢我的朋友... :)
【解决方案2】:

你拥有的是一个 json 字符串。您可以使用json_decode 将其转换为关联数组

喜欢:

$str = '[{"schedule_time_id":1},{"schedule_time_id":2}]';
$arr = json_decode( $str, true );

echo "<pre>";
print_r( $arr );
echo "</pre>";

这看起来像:

Array
(
    [0] => Array
        (
            [schedule_time_id] => 1
        )

    [1] => Array
        (
            [schedule_time_id] => 2
        )

)

如果要将其转换为简单数组(非关联数组),可以使用array_column

$newArr = array_column( $arr, 'schedule_time_id' );

echo "<pre>";
print_r( $newArr );
echo "</pre>";

这将导致:

Array
(
    [0] => 1
    [1] => 2
)

为了更短,您可以:

$str = '[{"schedule_time_id":1},{"schedule_time_id":2}]';
$newArr = array_column( json_decode( $str, true ) , 'schedule_time_id' );

【讨论】:

    猜你喜欢
    • 2020-03-16
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    相关资源
    最近更新 更多