我从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'
之间,但我无法弄清楚那些与正确的'[]'
有关的东西。
答案 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);
}