[英]creating a multidimensional array from queries
我很難根據從mysql數據庫中獲取的查詢構造多維數組。 目的是為JSON編碼准備結果。 這里有問題。
我想要的結構:
Array (
[68] => Array (
[0] => Array (
[id] => 64
[description] => yada, yada, yada... )
[1] => Array (
[id] => 65
[description] => yada, yada, yada...)
[2] => Array (
[id] => 66
[description] => yada, yada, yada... ) )
[69] => Array (
[0] => Array (
[id] => 64
[description] => yada, yada, yada... )
[1] => Array (
[id] => 65
[description] => yada, yada, yada...)
[2] => Array (
[id] => 66
[description] => yada, yada, yada... ) )
...etc
)
從:
//this is a list of unknown length
$array_ids = (68, 69, 70, etc... ); // or:
Array (
[0] => 68
[1] => 69
[2] => 70
[3] => 71
etc..
)
//this is a known length
$array_contents = ( array ( array ( [id], [description]) ); // or:
Array (
[0] => Array (
[id] => 64
[description] =>yada, yada, yada... )
[1] => Array (
[id] => 65
[description] => yada, yada, yada... )
[2] => Array (
[id] => 66
[description] => yada, yada, yada... ) )
我的嘗試:
foreach($array_ids as $row){
$result = array($row=>array());
foreach($array_contents as $key => $value){
$result [$row][$key] = $value;
}
}
結果:
Array (
[68] => Array (
[0] => Array (
[id] => 64
[description] => yada, yada, yada... )
[1] => Array (
[id] => 65
[description] => yada, yada, yada...)
[2] => Array (
[id] => 66
[description] => yada, yada, yada... ) )
)
...這就是停止的地方。 它不會繼續到下一行ID 69、70等。
我究竟做錯了什么?
這行似乎是問題所在:
$result = array($row=>array());
每次通過$array_ids
將完全清除$result
,並用$array_contents
一項填充它,而不是將其附加到末尾。
用它替換它應該起作用:
$result[$row] = array();
這是完整的工作版本:
$array_ids = array(68,69,70);
$array_contents = array(
array(
'id' => 64,
'description' => 'yada, yada, yada...'
),
array(
'id' => 65,
'description' => 'yada, yada, yada2...'
),
array(
'id' => 66,
'description' => 'yada, yada, yada3...'
),
);
foreach($array_ids as $row){
$result[$row] = array();
foreach($array_contents as $key => $value){
$result [$row][$key] = $value;
}
}
var_dump($result);
?>
這是輸出:
array(3) {
[68]=>
array(3) {
[0]=>
array(2) {
["id"]=>
int(64)
["description"]=>
string(19) "yada, yada, yada..."
}
[1]=>
array(2) {
["id"]=>
int(65)
["description"]=>
string(20) "yada, yada, yada2..."
}
[2]=>
array(2) {
["id"]=>
int(66)
["description"]=>
string(20) "yada, yada, yada3..."
}
}
[69]=>
array(3) {
[0]=>
array(2) {
["id"]=>
int(64)
["description"]=>
string(19) "yada, yada, yada..."
}
[1]=>
array(2) {
["id"]=>
int(65)
["description"]=>
string(20) "yada, yada, yada2..."
}
[2]=>
array(2) {
["id"]=>
int(66)
["description"]=>
string(20) "yada, yada, yada3..."
}
}
[70]=>
array(3) {
[0]=>
array(2) {
["id"]=>
int(64)
["description"]=>
string(19) "yada, yada, yada..."
}
[1]=>
array(2) {
["id"]=>
int(65)
["description"]=>
string(20) "yada, yada, yada2..."
}
[2]=>
array(2) {
["id"]=>
int(66)
["description"]=>
string(20) "yada, yada, yada3..."
}
}
}
我嘗試了以下數組結構和邏輯的工作原理,我的邏輯有點不同
$array = array(68,69,70);
$nextArray = array(
array(
'id'=>64,
'desc'=>'test'
),
array(
'id'=>65,
'desc'=>'test'
),
array(
'id'=>66,
'desc'=>'test'
),
array(
'id'=>67,
'desc'=>'test'
),
);
$tempArray = array();
foreach($array as $value){
foreach($nextArray as $key => $value1){
$tempArray[$value][$key] = $value1;
}
}
var_dump($tempArray);
輸出:
array
68 =>
array
0 =>
array
'id' => int 64
'desc' => string 'test' (length=4)
1 =>
array
'id' => int 65
'desc' => string 'test' (length=4)
2 =>
array
'id' => int 66
'desc' => string 'test' (length=4)
3 =>
array
'id' => int 67
'desc' => string 'test' (length=4)
69 =>
array
0 =>
array
'id' => int 64
'desc' => string 'test' (length=4)
1 =>
array
'id' => int 65
'desc' => string 'test' (length=4)
2 =>
array
'id' => int 66
'desc' => string 'test' (length=4)
3 =>
array
'id' => int 67
'desc' => string 'test' (length=4)
70 =>
array
0 =>
array
'id' => int 64
'desc' => string 'test' (length=4)
1 =>
array
'id' => int 65
'desc' => string 'test' (length=4)
2 =>
array
'id' => int 66
'desc' => string 'test' (length=4)
3 =>
array
'id' => int 67
'desc' => string 'test' (length=4)
好,重新閱讀問題后,請嘗試以下操作:
$outputArray = array();
foreach( $array_ids as $id ){
$outputArray[$id] = $array_contents;
}
嘗試按照更短的方式更改代碼
$result = array();
foreach($array_ids as $row){
foreach($array_contents as $key => $value){
$result [$row][$key] = $value;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.