通过在mySQL数据库中循环创建数组,在PHP中只捕获一次条目
我对编码比较陌生,需要一些帮助。我基本上是尝试在mySQL数据库中循环一个条目,并将任何新条目推送到一个数组中,这样它在我的数组中只出现一次通过在mySQL数据库中循环创建数组,在PHP中只捕获一次条目,php,mysql,arrays,database,Php,Mysql,Arrays,Database,我对编码比较陌生,需要一些帮助。我基本上是尝试在mySQL数据库中循环一个条目,并将任何新条目推送到一个数组中,这样它在我的数组中只出现一次 // SQL query $response = $bdd->query('SELECT serie_bd FROM inventaire_bd'); //creating array to group all elements from the db so that they do not repeat $serie_bd_groupe=ar
// SQL query
$response = $bdd->query('SELECT serie_bd FROM inventaire_bd');
//creating array to group all elements from the db so that they do not repeat
$serie_bd_groupe=array();
while($data_collected = $response->fetch())
{
if(array_key_exists($data_collected,$serie_bd_groupe)==false)
{
array_push($data_collected,$serie_bd_groupe);
}
}
这行吗似乎循环在第二次访问某个条目后将一直处于停滞状态,因为if语句不会自动执行
同样在将来,他们的php是否等同于jsfiddle.net,以便我可以对代码进行语法测试
感谢您抽出时间如果您正在从数据库中查找唯一值(serie_bd),请更新您的查询,以包含如下“DISTINCT”:
$bdd->query('SELECT DISTINCT serie_bd FROM inventaire_bd');
另一方面,我认为您正在寻找的是数组键将是默认整数,因此您不想检查它们。与此相反:
if(array_key_exists($data_collected,$serie_bd_groupe)==false)
您应该这样做:
if(!(in_array($data_collected,$serie_bd_groupe)))
另一方面,如果希望收集的数据是数组键而不是值,则可以执行以下操作,而不是数组推送:
$serie_bd_groupe[$data_collected] = 1;
然后你的密钥检查就可以了。
$data\u collected
是获取数组还是收集器数组?旁白:数组推送
是一个坏习惯。有一些非常罕见的情况下,你想使用它,但这不是其中之一。只需使用[]
操作符。@Jon出于好奇,为什么使用数组推送是个坏习惯?这是因为我们可以简单地使用[]
操作符吗?我看不出比调用doc所说的函数的开销有什么不同。@code-jaff:它更慢,而且(更重要的)它不是惯用的。每个人都能立即理解[]
的功能,而array\u push
需要人工读者“解析”它。手册中说“注意:如果使用array\u push()向数组添加一个元素,最好使用$array[]”