powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP] Объединение массивов.
10 сообщений из 10, страница 1 из 1
[PHP] Объединение массивов.
    #38700057
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как слить два массива так, чтобы сократились все повторения и при этом не было пустых строк в полученном массиве.
Пробовал array_merge() и потом array_unique() но одинаковые записи после сокращения оставляли пустые строки в массиве.
...
Рейтинг: 0 / 0
[PHP] Объединение массивов.
    #38700062
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejkКак слить два массива так, чтобы сократились все повторения и при этом не было пустых строк в полученном массиве.
Пробовал array_merge() и потом array_unique() но одинаковые записи после сокращения оставляли пустые строки в массиве.
чего?
...
Рейтинг: 0 / 0
[PHP] Объединение массивов.
    #38700097
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Того, что после array_unique() дубликаты исчезают, но остаются их пустые ячейки.
...
Рейтинг: 0 / 0
[PHP] Объединение массивов.
    #38700107
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejkТого, что после array_unique() дубликаты исчезают, но остаются их пустые ячейки.
враньё.
...
Рейтинг: 0 / 0
[PHP] Объединение массивов.
    #38700112
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ScareCrowandrejkТого, что после array_unique() дубликаты исчезают, но остаются их пустые ячейки.
враньё.
Привожу весь код)

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
<?php
if ($_POST["vvod_slov"])
{
	$podkluchenie = mysql_connect("ццц","ццц","ццц")  or die("MySQL сервер недоступен!".mysql_error());
	mysql_query("SET character_set_database=utf8"); 
	mysql_query("SET NAMES utf8");	
	mysql_select_db("webart_servis_kluchevyx_slov", $podkluchenie) or die("MySQL сервер недоступен!".mysql_error());

	$vvod_slov = $_POST["vvod_slov"]; //помещаем в переменную опорные слова строкой
	$oporn_slova = explode("\n", $vvod_slov);//разбиваем строку опорных слов на части и заносим их в массив(есть лишние пробелы)

	for ($i = 0; $i < count($oporn_slova); $i++)//перебираем массив из строки в новый массив (без лишних пробелов)
		{
		$oporn_slova_bez_probelov[$i] = trim($oporn_slova[$i]);
		}
	
	$osnova_stroki_zaprosa = implode("', '", $oporn_slova_bez_probelov);//делаем из массива опорных слов основу строки для sql запроса
	$stroka_zaprosa = "'" . $osnova_stroki_zaprosa . "'";//окончательно формируем строку для sql запроса
	
	$rezultat_podbora = mysql_query//подставляем строку для sql запроса в полный запрос
	("
	 SELECT `slova` FROM `tablizca_slov` WHERE `id` in
	(SELECT `id_slova` FROM `tablizca_svyazej` WHERE `id_izobrazheniya` in 
	(SELECT `id_izobrazheniya` FROM `tablizca_svyazej` WHERE `id_slova` in 
	(SELECT `id` FROM `tablizca_slov` WHERE `slova` IN (" . $stroka_zaprosa . "))))
	");
	
$n = 0;//номера ячеек $massiv_rezultata
	while ($data = mysql_fetch_array($rezultat_podbora))//если в $rezultat_podbora нет ни одной записи, то цикл не выполняется
		{
		$massiv_rezultata[$n] = $data['slova'];//массив для вывода результата подбора строкой
		$n++;
		}
		
if ($massiv_rezultata)
{
		$massiv_rezultata = array_merge($oporn_slova_bez_probelov, $massiv_rezultata);
		$massiv_rezultata = array_unique($massiv_rezultata);
	}
	else
	{
		$massiv_rezultata = $oporn_slova_bez_probelov;
		}

	for ($i = 0; $i < count($massiv_rezultata); $i++)
	{
		$a ++; //счётчик для имён флажков в результате подбора
		echo "<input type=\"checkbox\" name=\"checkbox_" . $a . "\"> " . $massiv_rezultata[$i] . "<br>\n";//выводим результат подбора списком с флажками
		}

	//$rezultat = implode("; ", $massiv_rezultata);//создание строки из массива результата подбора
//	echo $rezultat;
		
	
	mysql_close($podkluchenie);
	echo "<hr class=\"otbivka_24\">";
}
?>
...
Рейтинг: 0 / 0
[PHP] Объединение массивов.
    #38700126
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот что выдала print_r ($massiv_rezultata):

Array (
[0] => природа
[1] => гуру
[3] => День святого Валентина
[4] => еда
[5] => знак
[6] => пара
[7] => пейзаж
[9] => радуга
[10] => сердце
[11] => символ
[12] => чашка
)

Какого индексы с пропусками? Млин…
...
Рейтинг: 0 / 0
[PHP] Объединение массивов.
    #38700217
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По-моему, получилось:

Код: php
1.
$massiv_rezultata = array_values(array_unique(array_merge($oporn_slova_bez_probelov, $massiv_rezultata)));
...
Рейтинг: 0 / 0
[PHP] Объединение массивов.
    #38700234
anvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejkВот что выдала print_r ($massiv_rezultata):
Какого индексы с пропусками? Млин…


Патамушта в документации это описано:
http://ru2.php.net/manual/en/function.array-unique.php
Note that keys are preserved. array_unique() sorts the values treated as string at first, then will keep the first key encountered for every value, and ignore all following keys.
...
Рейтинг: 0 / 0
[PHP] Объединение массивов.
    #38700257
anvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejkПривожу весь код)

Код: php
1.
2.
3.
4.
5.
6.
7.
<?php
	for ($i = 0; $i < count($massiv_rezultata); $i++)
	{
		$a ++; //счётчик для имён флажков в результате подбора
		echo "<input type=\"checkbox\" name=\"checkbox_" . $a . "\"> " . $massiv_rezultata[$i] . "<br>\n";//выводим результат подбора списком с флажками
        }
?>



И, кстати, если бы вы вместо for воспользовались циклом foreach для обхода массива, то проблема с индексами вас бы не волновала.


Код: php
1.
2.
3.
4.
5.
6.
7.
<?php
	foreach ($massiv_rezultata as $key=>$value)
	{
		$a ++; //счётчик для имён флажков в результате подбора
		echo "<input type=\"checkbox\" name=\"checkbox_" . $a . "\"> " . $value. "<br>\n";//выводим результат подбора списком с флажками
        }
?>
...
Рейтинг: 0 / 0
[PHP] Объединение массивов.
    #38701119
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejk,

тут у тебя всего 12 записей, но для больших массивов например на 10 тыс. записей такая задача решается вот так, потому что array_unique и циклы алгоритмически слишком дорого стоят

Код: php
1.
array_values(array_filter(array_flip(array_flip(array_merge($a, $b))));
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP] Объединение массивов.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]