如果数组在PHP中存在,则跳过添加到数组
我正在使用如果数组在PHP中存在,则跳过添加到数组,php,arrays,Php,Arrays,我正在使用in_array函数跳过向数组中添加相同地址 代码: 如果$row['address']与$addresses\u list['address']的地址相同,我想跳过添加到数组中。您可以创建一个临时变量来存储$addresses\u list数组中已存储的address的值。每当在$addresses\u列表数组中存储$row时,都可以将地址键值存储在临时变量中 现在,每次需要检查临时变量时,不管键值是否已经存在 请注意甚至建议对其使用[]运算符。因此,我将您的代码改为使用[] 注意:
in_array
函数跳过向数组中添加相同地址
代码:
如果
$row['address']
与$addresses\u list['address']
的地址相同,我想跳过添加到数组中。您可以创建一个临时变量来存储$addresses\u list
数组中已存储的address
的值。每当在$addresses\u列表
数组中存储$row
时,都可以将地址
键值存储在临时变量中
现在,每次需要检查临时变量时,不管键值是否已经存在
请注意甚至建议对其使用[]
运算符。因此,我将您的代码改为使用[]
注意:如果使用array_push()向数组中添加一个元素,则
最好使用$array[]=因为这样就不会有额外的开销
调用函数
请尝试以下内容(在评论中解释):
如果您确实只想要唯一的地址值,并且不需要重复行。您可以在SQL查询端本身解决这个问题。您只需在
地址
上使用分组方式
。这将优化从数据库服务器传输到PHP应用程序的数据包。此外,还可以使用这种方法执行其他阵列操作
$addresses_list = array();
// It is a good practice to have query string in a separate variable
$sql = "SELECT lat,lng,address
FROM api_order
where userid=683
GROUP BY address;"
$stmt_select_address_result = $databaseManager->connect()->prepare($sql);
$stmt_select_address_result->execute();
while ($row = $stmt_select_address_result->fetch(PDO::FETCH_ASSOC)) {
// No need for any checks, as you are getting unique addresses only
$addresses_list[] = $row;
}
你好,你能帮我显示一下重复的次数吗?@PardisAk你是什么意思?我的意思是:我想显示一个地址的重复次数。例如,如果一个地址重复4次,我会显示一行,如下所示:Paris-4
$addresses_list = array();
$temp_addresses = array(); // Create a temp array
$stmt_select_address_result = $databaseManager->connect()->prepare("SELECT lat,lng,address FROM api_order where userid=683;");
$stmt_select_address_result->execute();
while ($row = $stmt_select_address_result->fetch(PDO::FETCH_ASSOC)) {
// check in temporary variable instead
if (!in_array($row['address'], $temp_addresses)) {
// add to temp array to avoid duplicate entry in next loop
$temp_addresses[] = $row['address'];
$addresses_list[] = $row;
}
}
$addresses_list = array();
// It is a good practice to have query string in a separate variable
$sql = "SELECT lat,lng,address
FROM api_order
where userid=683
GROUP BY address;"
$stmt_select_address_result = $databaseManager->connect()->prepare($sql);
$stmt_select_address_result->execute();
while ($row = $stmt_select_address_result->fetch(PDO::FETCH_ASSOC)) {
// No need for any checks, as you are getting unique addresses only
$addresses_list[] = $row;
}