2014-07-23 136 views
0

我已经看过搜索,但有太多不同措辞的问题,我不知道我应该找的。我也不会想到如何将这一点尽我所能,但这里有:PHP阵列到阵列

我想采取mysqli_fetch_assoc()结果并为每行创建一个数组。

比方说,结果有两行:

[0][0] = Cheese 
[0][1] = 1 
[1][0] = Milk 
[1][1] = 2 

我怎么能丢弃这些到一个新创建阵列比方说叫$items

就是我希望实现的是:

$items = array(
    array("Cheese",1), 
    array("Milk", 2) 
); 

我到目前为止唯一的代码是这样的:

if($row = mysqli_fetch_assoc($q)) { 
    for($i=0;$i<$total;$i++) { 
     $items[$i][] = $row[$i]; 
    } 
} 

我没有试过,但我有这非常令人不安的感觉它绝对不会工作。

+1

你永远不会知道,直到你尝试。然后看看'array_push()'http://php.net/manual/en/function.array-push.php –

+1

尝试一下,然后解释它为什么不起作用(如果没有)。没有人问我们什么时候你可以自己试试... – BenM

+0

“*我没有尝试过这个,但是我有这种非常令人不安的感觉,它肯定不会工作。*”为什么不尝试它,看看你得到什么错误特别是,如果有的话? – esqew

回答

0

难道这不行吗?

if($row = mysqli_fetch_assoc($q)) { 
    foreach($row as $r) { 
     $items[] = $r; 
    } 
} 
+0

没有想到,并且正在添加几行来测试这个工作是否可以返回一些结果。抱歉的家伙,应该在测试之前测试过! >< –

0
$new_arr = array(); 
while ($row = mysql_fetch_assoc($q)) 
{ 
    foreach($row as $value){ 
     $new_arr[][$value[0]] = $value[1]; 
    } 
} 
0

我想这是你所需要的

while ($row = mysql_fetch_assoc($q)) 
{ 
    $arr = []; 
    foreach ($row as $value) 
     $arr[] = $value; 
    $items[] = $arr; 
} 
var_dump($items); 
0
mysqli_result::fetch_all()  

“返回关联或数字阵列拿着结果行的一组”

我想你想太难。二维数组已经是一个包含数组的数组。在你的情况,fetch_all的结果恰恰是包含“每一行”的阵列阵列

如果你不打算存储整个结果集,那么你可以这样做:

$rows[] = Array(); 
while ($row = mysqli_fetch_row() && $someCondition) $rows[] = $row; 

但真的如果可能的话,最好在查询上加上LIMIT。