Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Удаление из Массива в Php

26K
20 ноября 2008 года
maddy
19 / / 20.11.2008
Вот такая у меня проблемка, значит есть массив и выглядит он примерно так:

Элемент1,1,текст,текст
Элемент2,1,текст,текст
Элемент3,1,текст,текст
Элемент4,1,текст,текст
.....
Элемент999,1,текст,текст



Если мне нужно удалить одну из строк массива к примеру
четвертую строку(но это может быть и любая другая)
как это блин сделать, никак ума не приложу. третий день имею мозг во все извилины =)
Была мысль сделать поиск типа

Вводим в форму название ,к примеру, "элемент4" жмем кнопку, у нас отображается этот элемент и вся строка которая идет после него (это уже реализованно)
Но как же теперь всю эту строку удалить =) чтоб после нажатия строка полностью удалялась
244
20 ноября 2008 года
UAS
2.0K / / 19.07.2006
функцию unset уже отменили?
366
20 ноября 2008 года
int
668 / / 30.03.2005
Ну если нужен индусский вариант, то создавай другой массив, копируй в него первый массив, пропуская нужную строку, а затем переноси обратно
 
Код:
$b=array();
for($z9=0;$z9<count($a);$z9++)
    if ($z9 != $lineN) $b[]=a[$z9];
$a=$b;

Но unset($a[$lineN]), конечно, легче.
О, ещё вариант: unset($GLOBALS['a'][$lineN]);
26K
20 ноября 2008 года
maddy
19 / / 20.11.2008
просто админ панельку для новостей делаю и вот к примеру если админ сайта влез туда, то ему надо нажать крестик и новость удалится. А как скрипт определит что ему надо удалить именно эту строку я и не знаю =(
Вручную вводить строку уже не актуально =)
244
20 ноября 2008 года
UAS
2.0K / / 19.07.2006
Это называется - открыть учебник и начать изучать взаимодействие php и html. Это основы - то, о чем спрашиваете
26K
21 ноября 2008 года
maddy
19 / / 20.11.2008
А можете посоветовать такой учебник,
714
21 ноября 2008 года
clgs
226 / / 29.10.2008
Цитата: maddy
А можете посоветовать такой учебник,


одной книгой не получится (у меня не получилось), так что google в помошь

44K
21 ноября 2008 года
first_x
5 / / 21.11.2008
любой где обозначено "для начинающих", а вообще у тебя есть массив, у каждого значения массива есть ключ, по ключу можно обратиться к любому элементу, следовательно передавай указатель на этот ключ чрез html форму (например сделай напротив каждой записи чекбоксы в значениях номер или имя ключа). далее выбирай соотвествующий элемент массива в php скрипте и удаляй его.
366
21 ноября 2008 года
int
668 / / 30.03.2005
А у меня одной книгой получилось, но сейчас по друкой нету. Ну и +мануал, конечно.
Кстати, unset($a[$i]) я сегодня сделал. print_r($a) всё нормально показывает, с пропусками номеров, однако, foreach всё равно выводит полное содержимое массива. Так что мой вариант с циклом более удачный :)
Или, может, я что-то не понимаю в массивах и там надо как-то делать commit?
304
21 ноября 2008 года
Fenyx
707 / / 26.01.2005
Цитата: int
А у меня одной книгой получилось, но сейчас по друкой нету. Ну и +мануал, конечно.
Кстати, unset($a[$i]) я сегодня сделал. print_r($a) всё нормально показывает, с пропусками номеров, однако, foreach всё равно выводит полное содержимое массива. Так что мой вариант с циклом более удачный :)
Или, может, я что-то не понимаю в массивах и там надо как-то делать commit?


о_О скрипт в студиу

366
21 ноября 2008 года
int
668 / / 30.03.2005
Дословно не помню
 
Код:
$a=`dir /s`;
$a=explode("\n",$a);
for ($m=0;$m<count($a);$m++)
  if (substr(trim($a[$m]),-3) != "mp3")
     unset($a[$m]);
foreach($a as $a1)
  echo $a1."\n";

Вот как-то так
304
22 ноября 2008 года
Fenyx
707 / / 26.01.2005
Цитата: int

Вот как-то так


Бред

 
Код:
<?php
$arr=array(1,2,3,4,5,6,7);
print_r($arr);
unset($arr[5]);
print_r($arr);
foreach ($arr as $value){
 echo $value."\n";
}
?>
366
22 ноября 2008 года
int
668 / / 30.03.2005
Действительно заработало o_O
Вот только почему-то так и не хочет у меня фильтровать по расширению. Мне уже это не нужно, но всё равно странно, что одни файлы отбрасывает, а другие оставляет, хотя ни те ни те не подходят под условие.
Попробовал перезапускать цикл после каждого удаления, не помогло, доходит до некоторой строки и оставляет её, хотя расширение там такое же как у удалённых. Мистика.
Помогло вот такое решение:
 
Код:
foreach ($a as $b=>$c)
    if (!preg_match("/^.*\.mp3$/",$c))
        unset($a[$b]);
Цикл заменил :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог