форум вебмастероff на AlfaSpace.NET

Ubuntu и Linux |реактивный бесплатный хостинг | Киноклуб. ВСЁ БЕСПЛАТНО!
база знаний хостинга | правила форума

  Начало ° Ответить ° Статистика ° Опрос ° Регистрация ° Поиск ° FAQ °
Форум вебмастеров на AlfaSpace.NET / The Matrix Has You / Удаление элемента массива
Автор Сообщение
acsid
Alfa Guru

2388
# Дата: 18 Фев 2006 11:02 ° Поправил: acsid


Есть массив, в котором примерно 100 элементов.Каждый элемент это линия фаила типа:
nick|time()
Требуется удалить какой-то определенный из них (его номер мы не знаем). Спомощью какой функции это делается и возможно или это вообще?

maxtat
pda killer

1438
# Дата: 18 Фев 2006 11:06 ° Поправил: maxtat


Ну не знаю как это сделать точно, но могу объяснить алгоритм.
1. Находим нужную ячейку массива a[x]
3. делаем цикл, где:
В a[x] записываем значение a[x+1]
В a[x+1] записываем a[x+2] и т.д.
4. Значение a[100] стираем, ну или что-нибудь туда записываем
ЗЫ. Спасибо моему учителю по тп7

acsid
Alfa Guru

2388
# Дата: 18 Фев 2006 11:11 ° Поправил: acsid


maxtat
гиморойно. ктомуже число элементов может быть <=100 а может и больше..

я раньше так делал:

$us="$enginefile/engine/online.php";
$con = file($us);
for ($i = 0; $i < count($con); $i++) {
$m = explode("|", $con[$i]);
if (($m[2] < time())&&($m[0]!=$user)) {

$login=$m[0];
$logins=file($fn);
$new_users=array();
foreach ($logins as $login) {
$user=trim($login);
if (strstr($login,$m[2])=="") {
$new_users[]=$login;
}
}
$new_f=join($new_users);
$ff=fopen($fn, "w");
flock($ff, LOCK_EX);

fwrite ($ff, $new_f);
fflush($ff);
flock ($ff, LOCK_UN);
fclose ($ff);

все работает пока колличество элементов не превышает 60 ,а когда больше 60 -ти скрипт почемуто стирает последние 32 элемента..

DM53
Участник

232
# Дата: 19 Фев 2006 05:04


Пример:
<?php
$arr = array('1','2','3','4','5'); // сокращаемый массив
$str = '4'; // значение удаляемого ключа
$num = array_search($str,$arr);
array_splice($arr, $num, 1);
foreach ($arr as $string) echo $string;
?>

acsid
Alfa Guru

2388
# Дата: 19 Фев 2006 05:29


кажись ошибка у меня тут $new_f=join($new_users);
join(); такого ваще несуществует)

DM53
Участник

232
# Дата: 19 Фев 2006 05:37


Существует, и ещё как. btw, join() = implode();

acsid
Alfa Guru

2388
# Дата: 19 Фев 2006 05:49


DM53
хм а если массив большой что лучше ?
1)$new_f=join($new_users);
2)$new_f.="$new_users";
3)$new_f=implode($new_users);

DM53
Участник

232
# Дата: 19 Фев 2006 06:00


1 и 3 - идентичны. их бы и выбрал. к сведению, цитата из оф. мануала:

string implode (string glue, array pieces)

Возвращает строку, содержащую строковое представление всех элементов массива в том же порядке со строкой glue между элементами.

Т.е. ты забыл указать glue

acsid
Alfa Guru

2388
# Дата: 19 Фев 2006 06:17 ° Поправил: acsid


DM53

решил пойти по короткому и лёгкому пути:

$lines=file('on.php');
$_GET['nick']=$nick;
for($i=0;$i<count($lines);$i++) {
list($nick,$pass)=explode('|',$lines[$i]);
if ($nick==$_GET['nick']) {
$lines[$i]='';
$fp=fopen('on.php', 'w');
for ($i=0;$i<count($lines);$i++)
fwrite($fp,$lines[$i]);
fclose($fp);
}
}
а главное без усечек работает..)

Ваш ответ

Quote  Bold Style  Italic Style  Underlined Style  URL Link  Email Link  Script AutoTab  Preformatted Text  Отменить *Что это?
... Запретить смайлы


Перед отправкой "нелатинского" текста проверьте кодировку броузера!
 » Логин  » Пароль 
 
Powered by miniBB forum software © 2001-2008
Powered by miniBB-gzipper. Original size:27502, gzipped size:8718

Mp3 Download || Webs Studio™ || Song's Lyrics
eXTReMe Tracker Rambler's Top100 Рейтинг@Mail.ru Форум ТвойWeb [Valid RSS]