如何将序列号列表和数据库值放在一个多维数组中?

时间:2015-03-09 15:24:50

标签: php arrays multidimensional-array

我正在尝试在多维数组中添加序列号列表和数据库值,以生成从数据库中提取并使用数组打印的任务列表。

这是我的一段代码。

<?php
    $i = 0;
    $query = mysqli_query($sqlconn, 'SELECT task FROM tasks');
    $task[] = array();
    while($a = mysqli_fetch_array($query))
    {
        $i++;
        array_push($task[0], $i);
        array_push($task[1], $a[0]);
    }
    echo '<br/>You are having <b style="color:red;">' . $i . '</b> tasks to do.<br/><br/>';
    foreach($task as $tasks)
    {
        echo $tasks[0] . '. ' . $tasks[1] . '<br/>';
    }
?>

我是编程和PHP的初学者。

我想获得类似的输出 这是任务1 这是任务2 3.这是任务3,它不会从该数组$ task生成。

2 个答案:

答案 0 :(得分:1)

您正在循环结果以创建数组 然后再循环输出它... 你可以

  

SIMPLIFY ....也许是这样的?

$i = 0; 
$query = mysqli_query($sqlconn, 'SELECT task FROM tasks');
$tot = mysqli_num_rows($query);
echo '<br/>You are having <b style="color:red;">' . $tot . '</b> tasks to do.<br/><br/>'; 
while($a = mysqli_fetch_array($query))
{   
     echo $i++ . '. ' . $a[0] . '<br/>';
}

如果确实需要将其存储在数组中而不是输出

$task = array();
while($a = mysqli_fetch_array($query))
{
    $task[] = array($i++, $a[0]);
}
foreach($task as $tasks)
{
    echo $tasks[0] . '. ' . $tasks[1] . '<br/>';
}
  很少解释

在php中你创建一个这样的数组:

# this...
$array = array('aaaa', 'bbbb', 'bbbb');

# ... is the same as:
$array = array();
$array[] = 'aaaa';
$array[] = 'bbbb';
$array[] = 'cccc';

# ...is the same as:
$array = array();
$array[0] = 'aaaa';
$array[1] = 'bbbb';
$array[2] = 'cccc';

# Multi dimentional : just set each array entry as an array itself:

$array = array();
$array[0] = array('aaaa', 'bbbb', 'cccc');
$array[1] = array(0=>'aaaa', 1=>'bbbb', 2=>'cccc');
$array[1][2] = array('dddd', 'eeee');

请更多阅读文档:PHP ARRAY

答案 1 :(得分:0)

你可以简化一些事情。

$query = mysqli_query($sqlconn, 'SELECT task FROM tasks');
$tasks = array();
while( $row = mysqli_fetch_assoc($query) ) {
    $tasks[] = $row['task'];
}
echo 'Total tasks: '.sizeof($tasks);
foreach ( $tasks as $key => $value ) {
    echo 'Task #'.$key.': '.$value;
}

手动递增每个密钥($ i)是不必要的,因为PHP会为您做到这一点。每个任务都有一个主键吗?如果是这样,请考虑将其用作数组键,因为这样可以更轻松地搜索数组。

$query = mysqli_query($sqlconn, 'SELECT task_id, task FROM tasks');
while( $row = mysqli_fetch_assoc($query) ) {
    $tasks[$row['task_id']] = $row['task'];
}
// Get a single task
if ( isset($tasks[25]) ) {
    // do something 
}