PHP Diziler: Bir diziye tek eleman dizileri bir dizi Pop

2 Cevap php

Tescilli bir çerçeve kullanarak, Sık sık, ben aşağıdaki biçimde veritabanından bir resultset olsun durumda kendimi buluyorum:

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)
  }
}

Ben daha ziyade gibi kimlikleri tek bir dizi olurdu:

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

Oraya ulaşmak için, sık sık kendimi yazma bulmak:

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

Bunu yapmak için daha etkili bir yolu var mı?

2 Cevap

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

örneğ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);

baskılar

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

PHP 5.3 ile yapabilirsiniz

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

PHP ile < 5.3) normal bir işlev tanımlamak ve sonra dize array_map olarak (adını geçirir olurdu.