Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Удаление повторяющихся данных из каталога.

Сообщения:  [1-10]   [11-11] 

 
 автор: sim5   (06.09.2010 в 18:26)   письмо автору
 
   для: Valick   (06.09.2010 в 17:04)
 

Ну да. Вот только читал, читал... но так и не понял - "задается число... циклом список... в браузер, от туда его копировать...", что вообще это и для чего. )

  Ответить  
 
 автор: Valick   (06.09.2010 в 17:04)   письмо автору
 
   для: sim5   (06.09.2010 в 16:30)
 

а если использовать базу данных, то вообще повсеместно наступит счастье :)

  Ответить  
 
 автор: sim5   (06.09.2010 в 16:30)   письмо автору
 
   для: ment2563   (06.09.2010 в 16:09)
 

А если сделать грамотный массив, то еще проще будет.

  Ответить  
 
 автор: ment2563   (06.09.2010 в 16:09)   письмо автору
 
   для: .....   (06.09.2010 в 14:47)
 

Вот оно самое то. Помогли добрые люди:



$name = array();
$desc = array();

# Подключаем файл с названиями и описаниями
require ('catalog.php');

# Убираем дубликаты названий
$name = array_unique($name);

# Формируем новое содержимое файла каталога
$text ="<?PHP \r\n\r\n";

foreach(
$name as $namekey=>$nameval){
$text .= '$name[] = '.$nameval
."
\r\n"

# Подставляется описание соответствующее названию
.'
$desc[] = '.$desc[$namekey]
."
\r\n"

# Если нужен разделитель между книгами, строку ниже раскомментировать
//."
\r\n//#################################\r\n\r\n"
;
}

$text .= "\r\n?>";
# Записываем новое содержимое в файл
file_put_contents('catalog.php'$text);

  Ответить  
 
 автор: .....   (06.09.2010 в 14:47)
 
   для: .....   (06.09.2010 в 14:15)
 

слегка не понял почему не работал тот код :)
<pre><?php
include('этот файл.txt');

var_dump($name);
print 
'<hr>';

$bool TRUE;
foreach(
$name AS $k => $v){
    if (
$bool) {
        
$name=array($k => $v);
        
$bool FALSE;
    } else if (!
in_array($v$name))
         
$name[$k]=$v;
}

var_dump($name);
print 
'<hr>';
asort($nameSORT_STRING);

foreach(
array_keys($name) AS $i) {
    print 
'$name[] = "'.  $name[$i] .'";'"\n";
    print 
'$desc[] = "'.  $desc[$i] .'";'"\n";
    print 
'######### (типа разделитель)'"\n";
}

  Ответить  
 
 автор: .....   (06.09.2010 в 14:15)
 
   для: .....   (06.09.2010 в 13:18)
 

проверил, код не работает, попозже переделаю :)

  Ответить  
 
 автор: .....   (06.09.2010 в 13:18)
 
   для: ment2563   (06.09.2010 в 07:48)
 

>если это необходимо то при добавлении <?php ?>
не необходимо, если только ради сокращения кода добавить <?php ?>

<pre><?php
include('этот файл.txt');

$outname = array();

for(
$i=0$i<count($name); $i++) {
    if (
in_array($name[$i], $outname)) {
        unset(
$name[$i]);
        
// unset($desc[$i]); // необязательно
    
} else array_push($outname$name[$i]);
}

var_dump($outname);
print 
'<hr>';
asort($outnameSORT_STRING);

foreach(
array_keys($outname) AS $i) {
    print 
'$name[] = "'.  $name[$i] .'";'"\n";
    print 
'$desc[] = "'.  $desc[$i] .'";'"\n";
    print 
'######### (типа разделитель)'"\n";
}
?>

  Ответить  
 
 автор: sim5   (06.09.2010 в 13:04)   письмо автору
 
   для: ment2563   (06.09.2010 в 07:48)
 

Что за ужас?
Если у вас все прописано как элементы массива:
$name[] = " название чего либо ";
$desc[] = " описание этого самого чего либо ";
то это должен быть не текстовый файл, а подключаемый php. Если же в текстовом держать, то лучше сериализованный массив.
И после array_unique -> implode("\r", $array).

  Ответить  
 
 автор: ment2563   (06.09.2010 в 07:48)   письмо автору
 
   для: .....   (05.09.2010 в 23:13)
 

Дело в том, что мне нужно вывести содержимое текстового файла в браузер и там список должен быть без повторов. Затем просто из браузера скопировать текст и создать новый каталог без дублей. Как то так. Сам файл каталога текстовый, но в принципе если это необходимо то при добавлении <?php ?> сверху - снизу можно переименовать расширение в php.

Вот нашел такое решение:

$file1=$_SERVER['DOCUMENT_ROOT'].'/1.txt';
$file2=$_SERVER['DOCUMENT_ROOT'].'/2.txt';
$f1=fopen($file1,'r');
$f2=fopen($file2,'w');
$str_array = array();
       
while($str=fgets($f1,1024)){  
$str_array[] =  trim($str);
}

$str_array = array_unique($str_array);

foreach ($str_array as $item){
fputs($f2,$item."\r\n");


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

  Ответить  
 
 автор: .....   (05.09.2010 в 23:13)
 
   для: ment2563   (05.09.2010 в 21:31)
 

а интересный вопрос :)

будет-ли при таком объявлении дублироваться запись
$name[] = $desc[] = " название чего либо ";
или чтобы так не было помогает-ли что-то вроде
$name[] &= $desc[] = " название чего либо ";

  Ответить  

Сообщения:  [1-10]   [11-11] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования