Здравствуйте, не могу разобраться почему фильтр работает неправильно при выгрузке данных из БД в перемешанном виде.
Создаю 2 массива и заношу в них инфу из БД:
$result = mysql_query("SELECT * FROM `reg_user` order by rand()",$link);
if (mysql_num_rows($result) > 0)
{
$row = mysql_fetch_array($result);
do
{
$one[] = array('email' => $row["email"],
'sending' => $row["sending"],
'sex' => $row["sex"],
'city' => $row["city"],
'country' => $row["country"],
'zip' => $row["zip"]);
$two[] = array('email' => $row["email"],
'sending' => $row["sending"],
'sex' => $row["sex"],
'city' => $row["city"],
'country' => $row["country"],
'zip' => $row["zip"]);
}
while ($row = mysql_fetch_array($result));
}
Далее перебираю и сравниваю, если подходит под критерии, то выдергиваю из массива и емаилы заношу в таблицу БД:
$cnt1 = count($one);
$cnt2 = count($two);
for($i=0;$i<$cnt1;$i++){
if($one[$i]["sending"]=='city'){
for($j=0;$j<$cnt2;$j++){
if($one[$i]["city"]==$two[$j]["city"] &&
$one[$i]["sex"]!=$two[$j]["sex"] &&
$one[$i]["zip"]!=$two[$j]["zip"]){
mysql_query("INSERT INTO orders(order_datetime,sender,receiver) VALUES(NOW(), '".$one[$i]['email']."', '".$two[$j]['email']."')");
mysql_query("INSERT INTO orders(order_datetime,sender,receiver) VALUES(NOW(), '".$two[$j]['email']."', '".$one[$i]['email']."')");
unset ($one[$i]);
unset ($two[$j]);
unset ($one[$j]);
unset ($two[$i]);
break;
}
}
}
}
Так вот, если в основном запросе при создании массивов, выгружаются данные в рандомном порядке:
$result = mysql_query("SELECT * FROM `reg_user` order by rand()",$link);
то фильтр срабатывает не полностью и почему то выгружает не все совпавшие пары и каждый раз разное количество, но если делать выгрузку в обычном режиме:
$result = mysql_query("SELECT * FROM `reg_user`",$link);
то все работает нормально.
Вопрос: почему так происходит? Почему фильтр не выбирает все адреса, если в массив попадают данные в рандом порядке?
Подозреваю, что проблема кроется в работе циклов, но не понимаю, что в них не так.