我很难根据从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... ) ) )
...and这就是它停止的地方。它不会继续到下一行id 69,70,等等...
我做错了什么?
发布于 2012-09-20 22:54:15
这一行似乎就是问题所在:
$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..."
}
}
}发布于 2012-09-20 22:56:06
我尝试了下面的数组结构和逻辑它是工作的,我的逻辑有点不同
$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)发布于 2012-09-20 22:57:02
好的,重读问题后,尝试以下操作:
$outputArray = array();
foreach( $array_ids as $id ){
$outputArray[$id] = $array_contents;
}https://stackoverflow.com/questions/12515081
复制相似问题