Php 如何将数据库结果放入三维数组中?

Php 如何将数据库结果放入三维数组中?,php,mysql,arrays,Php,Mysql,Arrays,这是我的密码 mysql_select_db("my_db", $con); $result = mysql_query("SELECT title,text,date FROM news limit 5"); 有没有办法从$result中提取标题、文本和日期,并将它们放入三维数组中?怎么样 $result = mysql_query("SELECT title,text,date FROM news limit 5"); $array = array(); $i = 0; while( $

这是我的密码

mysql_select_db("my_db", $con);
$result = mysql_query("SELECT title,text,date FROM news limit 5");
有没有办法从$result中提取标题、文本和日期,并将它们放入三维数组中?

怎么样

$result = mysql_query("SELECT title,text,date FROM news limit 5");
$array = array();
$i = 0;

while( $row = mysql_fetch_assoc( $result ) {
    $array[$i] = array();
    // i'm just guessing at what sort of array you want
    $array[$i][$row['title'] = array( 'text' => $row['text'], 'date' => $row['date'] );
    $i++;
}

我想你想要的实际上是一个二维数组,其中第二维有三个元素。如果我错了,请纠正我

的文件中的一条评论对此给出了答案:

Disclamer:这段代码不必要地冗长。我不想改变它,因为我已经从上面的网页复制了它。关于改进,我参考了评论

<?php
function mysql_fetch_rowsarr($result, $numass=MYSQL_BOTH) {
  $i=0;
  $keys=array_keys(mysql_fetch_array($result, $numass));
  mysql_data_seek($result, 0);
    while ($row = mysql_fetch_array($result, $numass)) {
      foreach ($keys as $speckey) {
        $got[$i][$speckey]=$row[$speckey];
      }
    $i++;
    }
  return $got;
}
?>
然后,您应该能够将此函数用作

<?
mysql_select_db("my_db", $con);
$result = mysql_query("SELECT title,text,date FROM news limit 5");

$arr = mysql_fetch_rowsarr($result);
$row_2_title = $arr[2]['title'];
?>

我很想知道。。。您需要一个三维数组,但可以:

$dim = array();

$result = mysql_query(...);

while ( $row = mysql_fetch_assoc($result) )
    // Whatever you want to save in that particular bucket,
    // I'll be using the result set
    $dim[$row['title']][$row['text']][$row['date']] = $row;

奇怪,

如果我们已经猜到了,这是我的:

$results = array();

while(($row = mysql_fetch_assoc($result))) {
    $results[] = $row;
}
这将创建如下数组:

array(array('title' => 'foo',
            'text' => 'bar',
            'date' => 'baz'),
      //...
)

你希望你的三维阵列看起来像什么?对你来说是二维的吗?如果第二个维度包含三个值,比如arrayarray'title'、'text'、'date',array'title'、'text'、'date'?数组数组将是一个3d数组?那么您可以从中选择很多答案:-您缺少了a],并且不需要$i计数器,$array[]就可以了。不知何故,这种结构没有多大意义。您将创建一个数组,该数组包含一个数组,该数组包含一个元素,即数组。有一个数组太多;是的,我不确定OP为什么需要3d阵列,我猜这只是一个错误,但是需要$i计数器的原因是如果你这样做:$array[]=array$arra[][$row['title']=array//stuff;如果打印,数组中将有两个元素而不是一个。那么为什么不:$array[]=array$row['title']=>array//stuff;或者更好的是,我知道OP中说的是三维,但您的示例只是生成了一个复杂的结构:$array[$row['title']]=array//stuff;不必要的复杂。foor循环与$get[$i]相同=$row;啊,那更好,谢谢。因为我引用了另一个页面,所以我不会更改代码……我会让你的评论强调可能的改进:-不,它只是复杂的代码,没有更多的功能。或者我没有看到。请解释为什么需要$keys。我已经添加了一条关于改进建议的备注。我想添加哦,我是那种认为选票应该保留给错误答案的人之一,这些答案提供了错误的结果。