簡體   English   中英

如何將數組轉換為多維數組

[英]how to convert an array into multidimensional

我有一個要轉換為多維數組的數組。

這是數組

Array
(
    [0] => Array
        (
            [packageid] => FGF1460676803
            [uniqueid] => uid1460676987
            [hotelname] => Jet Park Airport
            [Country] => New Zealand
        )

    [1] => Array
        (
            [packageid] => FGF1460678556
            [uniqueid] => uid1460678681
            [hotelname] => Mercure Windsor
            [Country] => New Zealand
        )

    [2] => Array
        (
            [packageid] => FGF1460678556
            [uniqueid] => uid1460678787
            [hotelname] => Jet Park Airport
            [Country] => New Zealand
        )
)

我試過這段代碼,但它沒有顯示我想要的。 從mysql的兩個表中獲取的這個數組第一個是攜帶packageid,第二個攜帶uniqueid、hotelname、country 所以我連接它但我想連接下面的數組但我被困在如何使用mysql或獲取數組之后。

這是mysql查詢

SELECT
    c.packageid,
    `uniqueid`,
    `hotelname`,
    `Country`
FROM
    custinfo c,
    hotelcarttemp h
WHERE
    c.packageid = h.packageid

PHP代碼

foreach ($json_decode_array1 as $row)
{
   $newArray[$row['packageid']][] = $row;
}

echo '<pre>'; print_r($newArray); echo '</pre>';

想要輸出

Array
(
    [0] => Array
        (   
            [packageid] => FGF1460676803
            [hoteldata] => Array
                    (
                        [0] => Array
                            (
                                [uniqueid] => uid1460676987
                                [hotelname] => Jet Park Airport
                                [Country] => New Zealand
                            )
                    )
        )

    [1] => Array
        (   
            [packageid] => FGF1460678556
            [hoteldata] => Array
                    (
                        [0] => Array
                            (
                                [uniqueid] => uid1460678681
                                [hotelname] => Mercure Windsor
                                [Country] => New Zealand
                            )

                        [1] => Array
                            (
                                [uniqueid] => uid1460678787
                                [hotelname] => Jet Park Airport
                                [Country] => New Zealand
                            )
                    )
        )
)

嘗試這個:

$newArray = array();
foreach ($json_decode_array1 as $row)
{
    $pid = $row['packageid'];
    if (!isset($newArray[$pid])) {
        $newArray[$pid] = array(
            'packageid' => $pid,
            'hoteldata' => array(),
        );
    }
    // if you don't want `packageid` 
    // to present in a arrays of `hoteldata`
    // you can `unset` this key:
    unset($row['packageid']);

    $newArray[$pid]['hoteldata'][] = $row;
}

// use array_values to turn array keys to numeric:
$newArray = array_values($newArray);

嘗試這個

$newArr = array();
    foreach($json_decode_array1 as $row) {
        $temp = array();
        $temp['packageid'] = $row['packageid'];
        $temp['hoteldata'] = array(
            'uniqueid' => $row['uniqueid'],
            'hotelname' => $row['hotelname'],
            'Country' => $row['Country'],
        );
        $newArr[] = $temp;
    }
    echo '<pre>';print_r($newArr);

使用array_walkarray_shiftarray_values函數的解決方案:

$result = [];
array_walk($arr, function($v) use(&$result) {   // $arr is your initial array
    $packageid = array_shift($v);
    if (!isset($result[$packageid])) {
        $result[$packageid] = ["packageid" => $packageid, "hoteldata" => [$v]];
    } else {
        $result[$packageid]["hoteldata"][] = $v;
    }    
});

print_r(array_values($result));

輸出:

Array
(
    [0] => Array
        (
            [packageid] => FGF1460676803
            [hoteldata] => Array
                (
                    [0] => Array
                        (
                            [uniqueid] => uid1460676987
                            [hotelname] => Jet Park Airport
                            [Country] => New Zealand
                        )
                )
        )
    [1] => Array
        (
            [packageid] => FGF1460678556
            [hoteldata] => Array
                (
                    [0] => Array
                        (
                            [uniqueid] => uid1460678681
                            [hotelname] => Mercure Windsor
                            [Country] => New Zealand
                        )
                    [1] => Array
                        (
                            [uniqueid] => uid1460678787
                            [hotelname] => Jet Park Airport
                            [Country] => New Zealand
                        )
                )
        )
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM