Есть ли встроенный способ получить массив из multi dim массива в PHP? - PullRequest
2 голосов
/ 05 февраля 2010

(очень полезно при запросе БД).
Если у меня есть Multy DIM массив

 [['id'=>1],['id'=>2],['id'=>34],['id'=>67]]

и я хочу [1,2,34,67]

Я знаю, как сделать это в коде, просто спрашивая, есть ли встроенный способ в PHP (или может быть в PDO), чтобы сделать это.

Ответы [ 4 ]

3 голосов
/ 05 февраля 2010

Я думаю, вам нужен режим PDO::FETCH_COLUMN в fetchAll, который возвращает только один столбец в виде массива:

<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

/* Fetch all of the values of the first column */
$result = $sth->fetchAll(PDO::FETCH_COLUMN, 0);
var_dump($result);
?>

С инструкция :

Чтобы вернуть массив, состоящий из всех значений одного столбца из набора результатов, укажите PDO :: FETCH_COLUMN. С помощью параметра column-index вы можете указать, какой столбец вы хотите.

1 голос
/ 05 февраля 2010

очень простой способ - сгладить многомерный массив

этот код был извлечен из http://php.net/manual/en/function.array-values.php

<?php 
  function array_flatten($array, $flat = false) 
  { 
    if (!is_array($array) || empty($array)) return ''; 
    if (empty($flat)) $flat = array(); 

    foreach ($array as $key => $val) { 
      if (is_array($val)) $flat = array_flatten($val, $flat); 
      else $flat[] = $val; 
    } 

    return $flat; 
  } 

  // will get your flattened array
  print_r( array_flatten( $vals ) );
?>
0 голосов
/ 05 февраля 2010

Не могли бы вы просто создать нужный массив?

$old = array( array( 'id'=>1 ), array( 'id'=>2 ), array( 'id'=>34 ), array( 'id'=>67 ) );
$arr = array();
foreach( $old as $item ) {
    $arr[] = $item['id'];
}

//$arr = [ 1, 2, 34, 67 ];
0 голосов
/ 05 февраля 2010

Может быть array_values(array_values($array));

...