使用PHP从mysqli数据库查询构建多维数组

3
我将尝试使用mysqli和php从我的数据库表中构建一个学生及其数据的多维数组。
我希望我的数组看起来像这样:
Array #$adult array
(
    [626] => Array #student no 626 data
        (
            [name] => emily,
            [age] => 43,
            [height] => 156,
        )
    [627] =>   #student no 627 data
        (
            [name] => luke,
            [age] => 31,
            [height] => 176,
        )
)

数字是成员ID,后面跟着他们的数据。

因此,我尝试了以下方法:

$sql = "SELECT * FROM pzgym_waitinglist WHERE seen = 0 GROUP BY gym_discipline, school_yr, id";
$result = $db->query($sql);

if ($result->num_rows > 0)
{
    #set up array
    $adult = array();

    while($row = $result->fetch_array()) 
    {
        $id = $row["id"];
        $name = $row["name"];
        $age= $row["age"];
        $height = $row['height'];

        if($row['gym_discipline'] == "Adult Gymnastics")
        {
            $adult[$id] = "['name'] => $name, ['age'] => $age, ['height'] => $height";

        }
    }
}

但是这并没有产生正确的结果,所以我猜测我的数组构建很糟糕 :( 这是我所得到的。
Array
(
    [626] => ['name'] => Emily, ['age'] => 43, ['height'] => 156
    [627] => ['name'] => Luke, ['age'] => 31, ['height'] => 176
)

请问有人能帮我从数据库中的数据构建一个成功的多维数组吗?

非常感谢。

3个回答

3

在创建数组时,需要创建一个二级索引,而不仅仅是将键和数据添加到数组中。

因此,首先使用学生ID创建一个索引(键),然后该新索引的值将是一个包含该学生所有数据的子数组。
然后下一次循环将对下一个学生执行相同的操作。

类似于:

while($row = $result->fetch_array()) 
{
    $id = $row["id"];
    $name = $row["name"];
    $age= $row["age"];
    $height = $row['height'];

    if($row['gym_discipline'] == "Adult Gymnastics")
    {
        $adult[$id] = array(
           "name" => $name, 
            "age" => $age, 
            "height" => $height,
        );

    }
}

非常感谢您的帮助! - user2886669
没问题 :) 这很简单,因为数组有键和值,而且值也可以是一个数组。 - James
我曾经非常接近,哈哈,我的错误是我尝试将键用[]包装起来,例如['name'] => $name,显然这样行不通 :( - user2886669
尝试和错误 :) 你不能想出所有的东西,首先尝试是关键,因为这样当解决方案呈现给你时,你很可能会更好地理解。 - James

2
使用array构造函数:
$adult[$id] = array('name' => $name, 'age' => $age, 'height' => $height);

感谢您的帮助! - user2886669

2
你需要按照以下方式进行--
$adult[$id]['name'] = $name;
$adult[$id]['age'] = $age;
$adult[$id]['name'] = $height; 

注意:如果您的数组是通过ID创建的,则不需要if条件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接