Сравнить два массива

Vadim_g

Новичок
Есть две базы данных MySQL. Нужно выбрать значения нескольких полей из одной и сравнить эти значения с полями другой базы, при наличии совпадения с этими элементами массива будут проводиться корректировки. То есть, задача — вытянуть из базы данных эти значения и записать их в массив, а далее нужно, насколько я понимаю, в цикле сравнить значение одного элемента массива со всеми значениями элементов нескольких массивов, то есть, осуществить поиск этого элемента во втором массиве.Как это правильно написать на php? Мой вариант кода представлен ниже, но он не работает. Помогите пожалуйста разобраться в чем я ошибся, или может я к решению данного вопроса подошел не с той стороны.

<?php
header('Content-Type: text/html; charset=utf-8');//меняем кодировку
ini_set("max_execution_time", 600);//время исполнения 10 мин
// создание подключения к БД нового сайта
$dbHost_new='...';
$dbName_new='...';
$dbUser_new='...';
$dbPass_new='...';
$myConnect_new = mysql_connect($dbHost_new,$dbUser_new,$dbPass_new);
mysql_select_db($dbName_new,$myConnect_new);
if(!$myConnect_new)
{
throw new Exception('Не удалось подключиться к базе данных! Проверьте параметры подключения');
}else{
echo "<h2>База удачно подключена!</h2>";
}
if(!mysql_select_db($dbName_new,$myConnect_new)) // выбор бд
{
throw new Exception("Не удалось выбрать базу данных {$dbName_new}!");
}else{
echo "<h2>База {$dbName_new} удачно выбрана!</h2>";
}
mysql_set_charset("utf8");

// создание подключения к БД старого сайта
$dbHost_old='...';
$dbName_old='...';
$dbUser_old='...';
$dbPass_old='...';
$myConnect_old = mysql_connect($dbHost_old,$dbUser_old,$dbPass_old);
mysql_select_db($dbName_old,$myConnect_old);
if(!$myConnect_old)
{
throw new Exception('Не удалось подключиться к базе данных! Проверьте параметры подключения');
}else{
echo "<h2>База удачно подключена!</h2>";
}
if(!mysql_select_db($dbName_old,$myConnect_old)) // выбор бд
{
throw new Exception("Не удалось выбрать базу данных {$dbName_old}!");
}else{
echo "<h2>База {$dbName_old} удачно выбрана!</h2>";
}
mysql_set_charset("utf8");
// ========подключение к базе данных осуществленно!==================================

$count_statey = mysql_query("SELECT publish_up FROM gwert_content",$myConnect_old);

$count_statey = mysql_num_rows($count_statey); //подсчет количества строк в базе
print_r($count_statey);
$result = mysql_query("SELECT id,date,alt_name,title FROM dle_post",$myConnect_new);
$result_old = mysql_query("SELECT id,title,publish_up,alias FROM gwert_content",$myConnect_old);


$n=0;
$m=0;
while($row[] = mysql_fetch_array($result));
{

$row[$n]["date"] = substr($row[$n]["date"], 0, 10);


while ($row_old[$m][] = mysql_fetch_array($result_old)) {
$row_old[$m]["publish_up"] = substr($row_old[$m]["publish_up"], 0, 10);//обрезаем время, оставляем только дату
if($row[$n]["date"] == $row_old[$m]["publish_up"]){
echo " Элемент массива ";
echo($row[$n]["date"]);
echo "совпал с элементом массива";
print_r($row_old[$m]["publish_up"]);
}
$m++;
}

$n++;

}
print_r($row);
?>
 

badmovie

Новичок
PHP:
$count_statey = mysql_query("SELECT publish_up FROM gwert_content",$myConnect_old);
$count_statey = mysql_num_rows($count_statey); //подсчет количества строк в базе
Это можно решить запросом с использованием COUNT(*).
Вообще, MySQL позволяет делать запросы к двуз базам данным, поэтому эту задачу можно решить проще, при условии что у пользователя MySQL есть права на доступ к обоим базам данных.
Пример запроса:
SELECT * FROM db_new.table t1 INNER JOIN db_old.table t2 ON t.field=t2. field
Но нужно привести поля t.field, t2.field к одному типу.
Правда я не знаю, каким образом делать запрос к двум базам данных с использованием php - как-то небыло необходимости.
 

badmovie

Новичок
А если решение с MySQL не очень подходит, то надо посмотреть в сторону функций для работы с массивами http://php.net/manual/en/ref.array.php и в частности на функции array_intersect и/или array_diff
 

Vadim_g

Новичок
А если решение с MySQL не очень подходит, то надо посмотреть в сторону функций для работы с массивами http://php.net/manual/en/ref.array.php и в частности на функции array_intersect и/или array_diff
Большое спасибо! Буду работать в этом направлении. Но тут больше вопрос, на данный момент в том что не работает сам цикл, просто хотелось бы понять почему не получается.
Из базы в первом цикле получается вытянуть все значения в двумерный массив, далее я пытаюсь изменить (обрезать) время и оставить только дату в каждом массиве:
$row[$n]["date"] = substr($row[$n]["date"], 0, 10);
и тут только срабатывает в первом массиве, а в остальных не меняет. Не могу разобраться почему.
 
Сверху