【问题标题】:Convert stdClass array to simple array将 stdClass 数组转换为简单数组
【发布时间】:2020-03-20 21:43:38
【问题描述】:

我正在使用php 7.1 并拥有以下数组:

但是,我只想拥有以下数组:

array(3808, 3807, 3806, 3805)

对如何将其转换为数组有什么建议吗?

感谢您的回复!

【问题讨论】:

标签: php arrays


【解决方案1】:

array_column() 函数会有所帮助:

$ids = array_column($records, 'ID');
print_r($ids);

将只输出 ID 数组。

检查文档Docs

【讨论】:

  • 谢谢!任何关于如何解除数组关联的建议。我仍然收到0 => 3385 等。
  • array_values() 将只返回值数组。检查它:php.net/manual/en/function.array-values.php。但是 0=>3385 是可以的,因为它是数组并且应该有索引
  • @Anna.Klee 这就是数组的显示方式。它只是说在第 0 个索引处你有 3385。
【解决方案2】:

将 Object 转换为 Array 并使用 array_column 从特定键返回值数组。

$a = (object) [
    0 => [ 'ID' => 3808],
    1 => [ 'ID' => 3807],
    2 => [ 'ID' => 3806],
    3 => [ 'ID' => 3805],
];

$b = array_column((array)$a, 'ID');
// $b = [3808,3807,3806,3805]

注意: (array)$a 强制进行数组转换。相反,(object)$a 会将 Array 转换为 stdClass 对象。

【讨论】:

  • 显然,(array)$a 在 PHP 的上下文中似乎是多余的。
  • @vivek_23 如果array_column 中的第一个参数是一个对象,您将收到错误,“array_column() 期望参数 1 是数组,对象在...中给出”。您必须将 Object 转换为 Array 才能使用 array_column
  • 我知道。我从 OP 的角度说,由于他有一个对象数组,因此不需要再次转换为数组。我的意思更多是关于 array_column() 功能,因为它通常处理数组数组而不是对象数组,并且正确理解 ID 是存在的对象的属性,而不是数组中的某个键。
  • 宾果游戏。它确实通过shown here 的开关盒检查。
  • @vivek_23 我现在知道了。我的错误——我把图像误读为相反的方式——数组对象,而不是问题中所述的对象数组。
猜你喜欢
  • 2016-12-25
  • 1970-01-01
  • 2011-11-08
  • 2013-11-21
  • 1970-01-01
  • 2016-02-05
  • 1970-01-01
  • 1970-01-01
  • 2011-09-03
相关资源
最近更新 更多