如何将数组两级合并为PHP中的一级

时间:2019-01-23 14:20:27

标签: php arrays

大家好。现在我正在尝试从SQL查询后将数组合并到数组中。.和这样的结果

array(3) {
  [0]=>
  array(1) {
    ["building_id"]=>
    string(1) "1"
  }
  [1]=>
  array(1) {
    ["building_id"]=>
    string(1) "2"
  }
  [2]=>
  array(1) {
    ["building_id"]=>
    string(1) "3"
  }
}

我已经尝试使用此代码

$result=[];
foreach($bulding_ids as $arr)
{
  $result  = array_merge($arr['building_id'],$result);
} 

但这也许不是答案

我想让数组变成这样

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}

我可以那样做吗?

2 个答案:

答案 0 :(得分:0)

您需要解析第一个数组中的每个元素并返回ID。然后,将其转换为int类型。最后,将新值保存到新数组中。

<?php
$bulding_ids[] = ["Building_id" => "1"];
$bulding_ids[] = ["Building_id" => "2"];
$bulding_ids[] = ["Building_id" => "3"];

$result = array();

foreach($bulding_ids as $val){
    $result[] = (int)$val['Building_id'];
} 

var_dump($result);

答案 1 :(得分:0)

您可以只使用array_column()

$result = array_column($building_ids, 'building_id');
  

array_column()从输入的单个列返回值,   由column_key标识。 (可选)index_key可以是   提供以通过以下方式索引返回数组中的值   输入数组的index_key列。

这消除了循环的需要。

输出:

array(3) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" }

唯一的缺点是,所有建筑物ID都将存储为字符串。如果这对您的应用程序来说是个问题,则可以轻松地使用array_map()将它们转换为整数。

直接在上面一行之后,执行以下操作:

$result = array_map('intval', $result);
  

array_map()返回一个包含array1所有元素的数组   在将回调函数应用于每个函数之后。的数量   回调函数接受的参数应与数字匹配   传递给array_map()

的数组

输出:

array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }

您还可以将其作为单行解决方案:

$result = array_map('intval', array_column($building_ids, 'building_id'));

但是我认为这看起来有些混乱。