Gönderen:
$arr = array(array('key1'=>'A',...),array('key1'=>'B',...));
için:
array('A','B',..);
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"));