使用键

时间:2016-01-12 14:01:29

标签: php mysql arrays

我刚刚在网上阅读过几十个“将数据插入数组”的帖子,但似乎没有一个描述我的确切问题,(或者我太无知了以至于无法识别它)所以我们走了。

我从SQL数据库中获取了一些数据。我想在表格中提出这个问题。我有一个工作脚本执行此操作,但它有轻微的故障,它不会在表中显示任何空结果(行)。为了获得所需的结果,我的尝试2.0现在启动一个空表,包含所有行,然后用数据填充它们。

$names = array('Alice', 'Bob', 'Charles', 'Dick', 'Emy');
for ($i=0; $i< count($names); $i++) 
 {
    $empty_table[] = array("Name" => $names[$i], "Total" => 0, "Wins" => 0, "Losses" => 0) ;
 }

这给了我一个数组,我可以显示为一个表,有5个数据行,每个数据行包含一个带有Name键(Alice to Emy)的字段值,否则填充所有其他键设置为0的值。它看起来像:

名称总赢额损失

Alice 0 0 0

Bob 0 0 0

Charles 0 0 0

迪克0 0 0

Emy 0 0 0

从数据库中我想填写0,IF的值,并且只有数据库中存在某些内容。我用

获取数据
for ($i=0; $i< count($names); $i++) {
$sql = "SELECT
        SEVERAL THINGS    
        WHERE Something = '".$names[$i]."'";
    $result = mysqli_query($conn,$sql);
// Not the real query obviously, but that part works and gives the intended result.
    while ( $row = mysqli_fetch_assoc($result) ) {
    Do something with the result in $row;
    }   // end while
}       // end for

$row是一个数组,其结构与$empty_table的值之一相同。例如:$row could be: Array ( [Name] => Bob [Total] => 10 [Wins] => 7 [Losses] => 3 )

现在的问题。我如何将一维数组$row放入二维数组$empty_table (replacing the '0' values)中,因为$empty_table总是有一个固定的5个元素,但可以有0到5之间的任何数字{{1在while循环中取决于数据库中的内容?

如果我尝试:

'$row's

$empty_table[] = $row;

我只使用$empty_table[$row['Name']] = $row; 值将行添加到现有数组中,而不是替换行。我确实理解解决方案是在'0'之间,但我无法弄清楚那些与正确的'[]'有关的东西。

2 个答案:

答案 0 :(得分:2)

我认为您可以将数组结构更改为:

for ($i=0; $i< count($names); $i++) {
     $empty_table[$names[$i]] = array("Name" => $names[$i], "Total" => 0, "Wins" => 0, "Losses" => 0) ;
}

因此,您的数组键将是该人的名称。通过这个,您可以确定每个时刻的行。数组应该像这样构造:

$empty_table = Array(
  "John"=> Array("name"=>"John", "total"=>10, "wins"=>3, "loses"=>7),
  "Mary"=> Array("name"=>"Mary", "total"=>10, "wins"=>5, "loses"=>5),
);

所以你可以访问这样的值:

$john_row = $empty_table["John"];

答案 1 :(得分:0)

我只是假装$ row来自db。

<?php

$names = array('Alice', 'Bob', 'Charles', 'Dick', 'Emy');

for ($i=0; $i< count($names); $i++)
 {
    $empty_table[] = array("Name" => $names[$i], "Total" => 0, "Wins" => 0, "Losses" => 0) ;
 }

$row = array("Name" => 'Alice', "Total" => 5, "Wins" => 6, "Losses" => 4);
$found = false;
foreach($empty_table as $k=>$a) {
    if($a['Name'] == $row['Name']) {
        $found = true;
        break;
    }
}
if($found) {
    echo 'index found'.$k.'\n';
    $empty_table[$k] = array_replace($empty_table[$k], $row);
    var_dump($empty_table);
}