Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как разбить значения доп.полей и удалить повторения?

Как разбить значения доп.полей и удалить повторения?


     06.10.2020    dle, php    Все вопросы » Общие вопросы по PHP    90

вопрос

if(!$xflist) {
	$sql_result = $db->query( "SELECT xfields FROM " . PREFIX . "_post WHERE approve=1" );
	while ( $rows = $db->get_row( $sql_result ) ) {
		$xfields[] = $rows;
	}
	$stack = array();
	foreach($xfields as $value){
		if($value[xfields]){
			$row = xfieldsdataload($value[xfields]);
			if($row[$xfname]){
				$rowdata = explode( "~", $row[$xfname]);
				foreach($rowdata as $value){
					if($value){
						$value = trim($value);
						array_unshift($stack, $value);
					}
				}
			}
		}
	}
	$stack = array_unique($stack);
	sort ($stack);	
	foreach($stack as $value){
		$vala = explode(",", $value);
		foreach ($vala as $valka) {
			$xflist .= "<option value=" . $valka . ">" . $valka . "</option>";
		}
	}
	create_cache($xfname, $xflist, $config['skin']);
}


Выводит все новости со значениями доп поля. Но проблема в том что доп поле может иметь несколько значений. Так как использую плагин "Выбор нескольких значений доп поля список"
Нужно чтобы выводился список без повторяющихся значений и без запятых

Сейчас выводит так:
Книга, Лист
Журнал
Музыка, Игорь

Ответа пока нет


3 комментария

dj-avtosh
PHP-developer

dj-avtosh - 6 октября 2020 18:29 -

$vala = array_unique($vala);

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

Genka_molodec
Юзер

Genka_molodec - 6 октября 2020 19:38 -

Я пробовал, но он почему-то не унифицирует значения. Все равно выводит повторения, думаю из за того что во втором foreach

LazyDev
PHP-developer

LazyDev - 6 октября 2020 22:45 -

Genka_molodec,
if(!$xflist) {
	$sql_result = $db->query("SELECT xfields FROM " . PREFIX . "_post WHERE approve=1");
	$stack = [];
	while ($row = $db->get_row($sql_result)) {
		$xf = xfieldsdataload($row['xfields']);
		
		$rowdata = explode(',', $xf[$xfname]);
		foreach ($rowdata as $value){
			if ($value) {
				$value = trim($value);
				$stack[$value] = $value;
			}
		}
	}

	sort($stack);
	
	foreach ($stack as $value) {
		$xflist .= "<option value=" . $value . ">" . $value . "</option>";
	}
	
	create_cache($xfname, $xflist, $config['skin']);
}

Мой блог: LazyDev.pro

Если мне не интересен вопрос - не помогаю, и за этим по контактам прошу не писать.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх