Удаление из Массива в Php
Элемент1,1,текст,текст
Элемент2,1,текст,текст
Элемент3,1,текст,текст
Элемент4,1,текст,текст
.....
Элемент999,1,текст,текст
Если мне нужно удалить одну из строк массива к примеру
четвертую строку(но это может быть и любая другая)
как это блин сделать, никак ума не приложу. третий день имею мозг во все извилины =)
Была мысль сделать поиск типа
Вводим в форму название ,к примеру, "элемент4" жмем кнопку, у нас отображается этот элемент и вся строка которая идет после него (это уже реализованно)
Но как же теперь всю эту строку удалить =) чтоб после нажатия строка полностью удалялась
функцию unset уже отменили?
Код:
$b=array();
for($z9=0;$z9<count($a);$z9++)
if ($z9 != $lineN) $b[]=a[$z9];
$a=$b;
for($z9=0;$z9<count($a);$z9++)
if ($z9 != $lineN) $b[]=a[$z9];
$a=$b;
Но unset($a[$lineN]), конечно, легче.
О, ещё вариант: unset($GLOBALS['a'][$lineN]);
Вручную вводить строку уже не актуально =)
Это называется - открыть учебник и начать изучать взаимодействие php и html. Это основы - то, о чем спрашиваете
А можете посоветовать такой учебник,
Цитата: maddy
А можете посоветовать такой учебник,
одной книгой не получится (у меня не получилось), так что google в помошь
любой где обозначено "для начинающих", а вообще у тебя есть массив, у каждого значения массива есть ключ, по ключу можно обратиться к любому элементу, следовательно передавай указатель на этот ключ чрез html форму (например сделай напротив каждой записи чекбоксы в значениях номер или имя ключа). далее выбирай соотвествующий элемент массива в php скрипте и удаляй его.
Кстати, unset($a[$i]) я сегодня сделал. print_r($a) всё нормально показывает, с пропусками номеров, однако, foreach всё равно выводит полное содержимое массива. Так что мой вариант с циклом более удачный :)
Или, может, я что-то не понимаю в массивах и там надо как-то делать commit?
Цитата: int
А у меня одной книгой получилось, но сейчас по друкой нету. Ну и +мануал, конечно.
Кстати, unset($a[$i]) я сегодня сделал. print_r($a) всё нормально показывает, с пропусками номеров, однако, foreach всё равно выводит полное содержимое массива. Так что мой вариант с циклом более удачный :)
Или, может, я что-то не понимаю в массивах и там надо как-то делать commit?
Кстати, unset($a[$i]) я сегодня сделал. print_r($a) всё нормально показывает, с пропусками номеров, однако, foreach всё равно выводит полное содержимое массива. Так что мой вариант с циклом более удачный :)
Или, может, я что-то не понимаю в массивах и там надо как-то делать commit?
о_О скрипт в студиу
Код:
$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";
$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";
Вот как-то так
Цитата: 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";
}
?>
$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";
}
?>
Вот только почему-то так и не хочет у меня фильтровать по расширению. Мне уже это не нужно, но всё равно странно, что одни файлы отбрасывает, а другие оставляет, хотя ни те ни те не подходят под условие.
Попробовал перезапускать цикл после каждого удаления, не помогло, доходит до некоторой строки и оставляет её, хотя расширение там такое же как у удалённых. Мистика.
Помогло вот такое решение:
Код:
foreach ($a as $b=>$c)
if (!preg_match("/^.*\.mp3$/",$c))
unset($a[$b]);
if (!preg_match("/^.*\.mp3$/",$c))
unset($a[$b]);