PHP: tek boyutlu diziler, çok boyutlu diziler Torna

3 Cevap php

Temelde benim app gibi garip boyutlu bir dizi geri gönderen bir web servisi ile etkileşim:

Array
(
    [0] => Array
        (
            [Price] => 1
        )
    [1] => Array
        (
            [Size] => 7
        )
    [2] => Array
        (
            [Type] => 2
        )
)

Bu bir sorun değil, ama sorun servis bu öğelerin indeksini sürekli değişiyor, bu yüzden bir sonraki dizideki Fiyat 1 yerine 0 olarak olabilir.

Ben $ var ['Boyut'] yerine $ var [1] ['Boyut'] ile değişkenleri erişebilir böylece nasıl effeciently bir tek boyutlu diziye böyle dizileri dönüştürmek mi?

Lütfen yardım takdir

3 Cevap

Bu gibi:

$result = array();

foreach($array as $inner) {
    $result[key($inner)] = current($inner);        
}

$result dizisi şimdi bu gibi görünecektir:

Array
(
    [Price] => 1
    [Size] => 7
    [Type] => 2
)

Bu kod, ana dizi görmezden tek boyutlu bir dizi olarak $ Marray gibi çok boyutlu dizi ve $ sArray düşünün

function flatten_array($mArray) {
    $sArray = array();

    foreach ($mArray as $row) {
        if ( !(is_array($row)) ) {
            if($sArray[] = $row){
            }
        } else {
            $sArray = array_merge($sArray,flatten_array($row));
        }
    }
    return $sArray;
}

Ben laravel en helper kullanıyorum: http://laravel.com/api/source-function-array_flatten.html#179-192

function array_flatten($array)
    {
        $return = array();

        array_walk_recursive($array, function($x) use (&$return) { $return[] = $x; });

        return $return;
    }