форум вебмастеро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); } } а главное без усечек работает..) |
|
Powered by miniBB forum software © 2001-2008
Powered by miniBB-gzipper. Original size:27502, gzipped size:8718 |