Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果数组在PHP中存在,则跳过添加到数组_Php_Arrays - Fatal编程技术网

如果数组在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;
}