Tek diziye diziler php dizi dönüştürme

6 Cevap php

Kimin değerleri bu gibi görünüyor belirli bir formatta tüm diziler bir dizi var:

Array
(
    [0] => Array
           (
               [username] => John
           )    
    [1] => Array
           (
               [username] => Joe
           )
    [2] => Array
           (
               [username] => Jake
           )
)

ve ben bu istiyorum:

Array
(
    [0] => John   
    [1] => Joe
    [2] => Jake
)

Ben bir döngü ile elle yapabilirsiniz, ancak daha iyi bir yolu var mı? Eğer değilse, ortak bir niteliği olan nesnelerin bir dizi için bunu yapmak mümkün mü?

6 Cevap

neden şeyler karmaşık?

foreach($array as $k=>$v) {
    $new[$k] = $v['username'];
}

PHP tam olarak bunu yapar yerleşik bir fonksiyon array_column var 5.5.0 beri.

PHP 5.3 kullanıyorsanız eğer array_walk_recursive ve bir kapağın yararlanabilirler (kapatma normal fonksiyonu ile değiştirilebilir eğer PHP version <5.3):

function arrayFlatten(array $array) {
    $flatten = array();
    array_walk_recursive($array, function($value) use(&$flatten) {
        $flatten[] = $value;
    });

    return $flatten;
}

$nested = array(
    array('username' => 'John'),
    array('username' => 'Joe'),
    array('username' => 'Jake'),
);

$flattened = arrayFlatten($nested);

var_dump($flattened)

array
  0 => string 'John' (length=4)
  1 => string 'Joe' (length=3)
  2 => string 'Jake' (length=4)
$new = array_map(create_function('$auser', 'return $auser["username"];'), $array);

Nesneleri kullanarak eğer sadece return $auser["username"]; return $auser->get_username(); olarak değişebilir

Bu kodu deneyin:

foreach   ($arr as $key => $val)
{
    sort($val );
    $new = array_merge($val, $new);
}
print_r ($new);

Bu deneyin:

$list=array();
foreach($array as $v) {
    array_push($list, $v['username']);
}