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。我已经添加了一条关于改进建议的备注。我想添加哦,我是那种认为选票应该保留给错误答案的人之一,这些答案提供了错误的结果。