Dizideki değerleri PHP ile bu şekilde nasıl alabilirim?

4 Cevap php

Gönderen:

$arr = array(array('key1'=>'A',...),array('key1'=>'B',...));

için:

array('A','B',..);

4 Cevap

Loop nispeten basit bir dönüşüm:

$newArray = array()
foreach ($arr as $a) {
    foreach ($a as $key => $value) {
        $newArray[] = $value;
    }
}

Ya da, belki de daha zarif:

function flatten($concatenation, $subArray) {
    return array_merge($concatenation, array_values($subArray));
}
$newArray = array_reduce($arr, "flatten", array());

John'un çözüm de güzel.

$output = array();
foreach ($arr as $array_piece) {
  $output = array_merge($output, $array_piece);
}
return array_values($output);

Her dizi ilk değer istiyorsanız Öte yandan, ne istediğiniz ...

$output = array();
foreach ($arr as $array_piece) {
  $output[] = array_unshift($array_piece);
}

Ama ilkini istiyorum düşünüyorum.

Böyle bir şey çalışması gerekir

<?
$arr = array(array('key1'=>'A','key2'=>'B'),array('key1'=>'C','key2'=>'D'));

$new_array = array();

foreach ($arr as $key => $value) {
    $new_array = array_merge($new_array, array_values($value));
}

var_export($new_array);
?>

Eğer ana dizinin içinde her dizideki tüm değerleri istiyorum.

function collapse($input) {
    $buf = array();
    if(is_array($input)) {
    	foreach($input as $i) $buf = array_merge($buf, collapse($i));
    }
    else $buf[] = $input;
    return $buf;
}

Yukarıda da kullanılabilecek değiştirilmiş unsplat fonksiyonu gibidir:

function unsplat($input, $delim="\t") {
    $buf = array();
    if(is_array($input)) {
    	foreach($input as $i) $buf[] = unsplat($i, $delim);
    }
    else $buf[] = $input;
    return implode($delim, $buf);
}
$newarray = explode("\0", unsplat($oldarray, "\0"));