Автор Тема: Есть ли такая функция ?  (Прочитано 9142 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Pacher

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 57
  • +0/-0
  • 0
    • Просмотр профиля
Есть ли такая функция ?
« : 26 Июня 2002, 19:07:35 »
Есть ли функция которая возвращает не удаленнуй часть массива(array_slice) , а  сам массив без удаленной части ?
Есть массив с новостями , нужно допустим удалить несолько елементов из середины массива , как это сделать ?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Есть ли такая функция ?
« Ответ #1 : 26 Июня 2002, 21:43:12 »
unset(), наверное.
А чем тебя не устраивает просмотреть список функций для работы с массивами самому?

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Есть ли такая функция ?
« Ответ #2 : 26 Июня 2002, 21:52:36 »
Удалять отдельные элементы массива можно через unset()
Смотри пример на
http://www.php.net/manual/en/function.unset.php
AS IS...

Оффлайн GotZfild

  • Универсал
  • Старожил
  • ****
  • Сообщений: 456
  • +0/-0
  • 2
    • Просмотр профиля
    • http://myphp.dem.ru
Есть ли такая функция ?
« Ответ #3 : 26 Июня 2002, 22:33:10 »
После трех дней без программирования жизнь становится бессмысленной.

Оффлайн Pacher

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 57
  • +0/-0
  • 0
    • Просмотр профиля
Есть ли такая функция ?
« Ответ #4 : 26 Июня 2002, 23:24:17 »
GotZfild
Эта функция возвращает тот кусок который взяла из массива , а мне нужна чтобы ф-я возвращала САМ массив без удаленного элемента .

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Есть ли такая функция ?
« Ответ #5 : 26 Июня 2002, 23:50:13 »
если ты сделаешь unset() для тех элементов, которые нужно удалить, этих элементов в массиве больше не будет.
Здесь ненужна функция, которая фозвращает массив, у тебя ведь уже есть этот массив (без удаленного элемента), можешь его смело использовать
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Pacher

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 57
  • +0/-0
  • 0
    • Просмотр профиля
Есть ли такая функция ?
« Ответ #6 : 27 Июня 2002, 01:04:40 »
Макс
А нумирование эл-мов после удаления изметится ?

Оффлайн Pacher

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 57
  • +0/-0
  • 0
    • Просмотр профиля
Есть ли такая функция ?
« Ответ #7 : 27 Июня 2002, 03:12:28 »
Ребят , попробовал использовать эту функцию .
Так попробовал , сяк попробовал но ниче не пашет .
Скрипт удаляет ВСЕ новости из файла и записывает туда слово Array .
Короче скрипт получает от другого скрипта цифру (номер новости кот. нужно удалить) получает в переменную $ form_value . И дальше по ходу скрипта должен удалить элементы массива и заново записать , но делает скрипт все иначе , как я уже выше написал .
Вот скрипт :

<html>
<
head>
<
titleNews Script
</title>
</
head>
<
body bgcolor="gainsboro">
<? 
$body_file_name="hah.txt";
$cra=fopen($body_file_name,"r");
$sos=fread($cra,64096);
$body_file_data=explode("|",$sos);

$name_of_file="na_na.txt";
$huy=fopen($name_of_file,"r");
$sux=fread($huy,64096);
$file_data=explode("|",$sux);


$form_value=$per;
$num=$per-1;


unset(
$body_file_data[$num]);

unset(
$file_data[$num],$file_data[$form_value]);



$to_body_file=implode("|",$body_file_data);
$to_file=implode("|",$file_data);

$last=fopen($body_file_name,"w");
$set=fputs($last,$body_file_data);

$hud=fopen($name_of_file,"w");
$ser=fputs($hud,$file_data);


fclose($cra);
fclose($last);

fclose($huy);
fclose($hud);

?>
</body>
</html>



Оффлайн GotZfild

  • Универсал
  • Старожил
  • ****
  • Сообщений: 456
  • +0/-0
  • 2
    • Просмотр профиля
    • http://myphp.dem.ru
Есть ли такая функция ?
« Ответ #8 : 27 Июня 2002, 10:22:40 »
Цитировать
Эта функция возвращает тот кусок который взяла из массива , а мне нужна чтобы ф-я возвращала САМ массив без удаленного элемента

Возвращает-то да. Но в исходном массиве уже не останется удаленного подмассива. То есть:$array = array("a""b""c""d""e");
$sub array_splice($array12);
print_r($sub);
print_r($array);

Выведет
Array
(
    [0] => b
    [1] => c
)
Array
(
    [0] => a
    [1] => d
    [2] => e
)
После трех дней без программирования жизнь становится бессмысленной.

Оффлайн Pacher

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 57
  • +0/-0
  • 0
    • Просмотр профиля
Есть ли такая функция ?
« Ответ #9 : 27 Июня 2002, 14:15:42 »
GotZfild
Вот , попробовал с той функцией кот . ты советуешь .
Получился такой код :


<? 
$body_file_name="hah.txt";
$cra=fopen($body_file_name,"r");
$sos=fread($cra,64096);
$body_file_data=explode("|",$sos);

$name_of_file="na_na.txt";
$huy=fopen($name_of_file,"r");
$sux=fread($huy,64096);
$file_data=explode("|",$sux);


$form_value=$per;
$num=$per-1;


$garbage1=array_splice($body_file_data,$num);

$garbage2=array_splice($file_data,$num,$form_value);



$to_body_file=implode("|",$body_file_data);
$to_file=implode("|",$file_data);

$last=fopen($body_file_name,"w");
$set=fputs($last,$body_file_data);

$hud=fopen($name_of_file,"w");
$ser=fputs($hud,$file_data);


fclose($cra);
fclose($last);

fclose($huy);
fclose($hud);

?>


Но он ничего не делает ......

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Есть ли такая функция ?
« Ответ #10 : 27 Июня 2002, 15:37:55 »
Пачер.
Самое главное в программировании - это отладка.
Разделить задачу на мелкие части, и убедиться, что каждая из них работает нормально.
Убери ты всю этту работу с файлами.
созждай тестовый массив, поработай с ним, выводя все на экран. А потом начинай работать с файлами.

А фраза "он ничего не делает" - это, извини, детский лепет.
Или заставь работать, или поищи себе другое занятие.

Оффлайн Pacher

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 57
  • +0/-0
  • 0
    • Просмотр профиля
Есть ли такая функция ?
« Ответ #11 : 27 Июня 2002, 16:47:29 »
RomikChef
Будем отлаживать ...... но все таки array_splice как то не так работает :]]]

Оффлайн GotZfild

  • Универсал
  • Старожил
  • ****
  • Сообщений: 456
  • +0/-0
  • 2
    • Просмотр профиля
    • http://myphp.dem.ru
Есть ли такая функция ?
« Ответ #12 : 27 Июня 2002, 17:02:08 »
Во-первых, этот скрипт можно минимизировать:
$form_value $per;  // Не понял этих строк
$num $per-1;
$files = array("hah.txt", \'na_na.txt\');
for ($i = 0; $i < sizeof($files); $i++) {
      $file = $files[$i];
      $fp = fopen($file, "r");
      $data = fread($fp, 64096);
      fclose($fp);
      $data = explode("|", $data);
      if ($file == "hah.txt") array_splice($data, $num);
      else array_splice($data, $num, $form_value);

      $fp = fopen($file, "w");
      fputs($fp, implode("|", $data));
      fclose($fp);

Во-вторых, структуру данных никто, кроме тебя, не знает, так что тут уж помочь вряд ли кто сможет.
Ошибки не выдаются?
И что это за строки, которых я не понял?
После трех дней без программирования жизнь становится бессмысленной.

Оффлайн GotZfild

  • Универсал
  • Старожил
  • ****
  • Сообщений: 456
  • +0/-0
  • 2
    • Просмотр профиля
    • http://myphp.dem.ru
Есть ли такая функция ?
« Ответ #13 : 27 Июня 2002, 17:22:19 »
Перечитал твою предыдущую версию и понял: ты неправильно используешь array_splice. Второй параметр там - начало подмассива, а вот третий - длина этого самого подмассива, а не индекс удаляемого элемента.
После трех дней без программирования жизнь становится бессмысленной.

Оффлайн Pacher

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 57
  • +0/-0
  • 0
    • Просмотр профиля
Есть ли такая функция ?
« Ответ #14 : 27 Июня 2002, 17:33:00 »
GotZfild


Цитировать
$form_value = $per;

$form_value - в эту переменную передается цифра из формы .
А кстати вообще-то можно все это заменить на просто
Цитировать
$num = $form_value-1;

Формат данных в na_na.txt - дата|заголовок
Формат данных в hah.txt тело новости|тело второй новости итд

Насчет скрипта который ты привел - он ведь так же каки мой работает , только тут другой способ решения ...
Кстати , ты наисал так что скрипт пишет или в один файл или в другой , а надо чтоб в 2 файла (ну как у меня в скрипте) .
P.S. Сейчас убрал из своего скрипта все что касается файлов итд
и после выполнения array_splice()
написал , чтобы print_r выводила содержимое массива ....... и что вы думаете ? :) Массив до выполнения array_splice и после -НЕ ИЗМЕНИЛСЯ .

 

Sitemap 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