[英]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_walk
、 array_shift
和array_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.