首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从查询创建多维数组

从查询创建多维数组
EN

Stack Overflow用户
提问于 2012-09-20 22:41:41
回答 4查看 69关注 0票数 0

我很难根据从mysql数据库获取的查询来构造多维数组。其目的是为json编码准备结果。在这里遇到了问题。

我的目标是:

代码语言:javascript
复制
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
)

发自:

代码语言:javascript
复制
//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... ) )

我的尝试是:

代码语言:javascript
复制
foreach($array_ids as $row){
    $result = array($row=>array());
    foreach($array_contents as $key => $value){
        $result [$row][$key] = $value;
    }
}

结果:

代码语言:javascript
复制
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,等等...

我做错了什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-09-20 22:54:15

这一行似乎就是问题所在:

代码语言:javascript
复制
$result = array($row=>array());

每次通过$array_ids,它都会完全清除$result,并用$array_contents中的一项重新填充它,而不是将它附加到末尾。

用这个替换它应该是可行的:

代码语言:javascript
复制
$result[$row] = array();

这里有一个完整的工作版本:

代码语言:javascript
复制
$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);
?>

输出如下:

代码语言:javascript
复制
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..."
    }
  }
}
票数 0
EN

Stack Overflow用户

发布于 2012-09-20 22:56:06

我尝试了下面的数组结构和逻辑它是工作的,我的逻辑有点不同

代码语言:javascript
复制
$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);

输出:

代码语言:javascript
复制
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)
票数 0
EN

Stack Overflow用户

发布于 2012-09-20 22:57:02

好的,重读问题后,尝试以下操作:

代码语言:javascript
复制
$outputArray = array();

foreach( $array_ids as $id ){
  $outputArray[$id] = $array_contents;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12515081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档