Массивы PHP: Вытолкайте массив одноэлементных массивов в один массив

Используя собственную платформу, я часто оказываюсь в ситуации, где я получаю набор результатов от базы данных в следующем формате:

array(5) {
  [0] => array(1) {
    ["id"] => int(241)
  }
  [1] => array(1) {
    ["id"] => int(2)
  }
  [2] => array(1) {
    ["id"] => int(81)
  }
  [3] => array(1) {
    ["id"] => int(560)
  }
  [4] => array(1) {
    ["id"] => int(10)
  }
}

У меня очень был бы единый массив идентификаторов, таких как:

array(5) {
  [0] => int(241)
  [1] => int(2)
  [2] => int(81)
  [3] => int(560)
  [4] => int(10)
}

Для получения там я часто пишу:

$justIds = array();
foreach( $allIds as $id ) {
  $justIds[] = $id["id"];
}

Существует ли более эффективный способ сделать это?

7
задан Rob Drimmie 31 May 2010 в 16:04
поделиться

2 ответа

$out = array_map('array_shift', $in);

например.

$in = array(
  array("id" => 241),
  array ("id" => 2),
  array ("id" => 81),
  array ("id" => 560),
  array ("id" => 10)
);
$out = array_map('array_shift', $in);
var_dump($out);

выводит

array(5) {
  [0]=>
  int(241)
  [1]=>
  int(2)
  [2]=>
  int(81)
  [3]=>
  int(560)
  [4]=>
  int(10)
}
9
ответ дан 6 December 2019 в 14:01
поделиться

В PHP 5.3 вы можете сделать

$justIds = array_map(
    function($cur) {
        return $cur['id'];
    },
    $allIds
);

В PHP < 5.3 вам придется определить регулярную функцию и затем передать ее имя как строку в array_map().

6
ответ дан 6 December 2019 в 14:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: