Удалить элемент из массива

Тема в разделе "PHP", создана пользователем Uglik, 9 авг 2011.

Модераторы: latteo
  1. Uglik

    Uglik

    Регистр.:
    8 окт 2008
    Сообщения:
    350
    Симпатии:
    14
    Здравствуйте
    Подскажите как правильно удалить элемент из массива
    Пример:
    PHP:
    for ($t 0$t count($linkfile); $t++) {
    echo 
    count($linkfile)." = ";
    $links file_get_contents($linkfile[$t]);
    echo 
    $t." - <strong>Парсим: </strong> <a href='".$linkfile[$t]."' target='_blank'>".$linkfile[$t]."</a><br>";
    $domen preg_match_all('#<a.*?href=[\'"]?([^\'" >]*)#'$links$result);
    for (
    $i 0$i count($result[1]);$i++) {
    if (
    strpos($result[1][$i], $sign)){
    $a_links $result[1][$i]."\n";
    $all_links $all_links.$a_links;
    }
    }
    echo 
    $all_links."<br>";
    if (
    count($all_links) == 0){
    echo 
    "Не одной ссылки не спаршенно!<br>";
    #echo "<span style='color:red;'>Удоляем данную ссылку из списка!</span>";
    #unset($linkfile[$t]);
    echo "<span style='color:red;'>".$linkfile[$t]."</span>";
    }
    echo 
    "<br>---------------------------------------------------------------------------------------------<br>";
    $f fopen($tmp"a");
    fwrite($f$all_links);
    fclose($f);
    unset(
    $all_links);
    flush();
    }
    По очереди парситься ссылка из файла и если она соответствует условию
    PHP:
    if (count($all_links) == 0){
    echo 
    "Не одной ссылки не спаршенно!<br>";
    #echo "<span style='color:red;'>Удоляем данную ссылку из списка!</span>";
    #unset($linkfile[$t]);
    echo "<span style='color:red;'>".$linkfile[$t]."</span>";
    }
    ее нужно удлаить....
    через unset сбиваеться цикл и не все элементы распаршиваються.
    Подскажите как правильно удалить элемент массива не соответсвующий условию
     
  2. -=Xardas=-

    -=Xardas=-

    Регистр.:
    17 сен 2008
    Сообщения:
    250
    Симпатии:
    58
    удаление через unset вполне адекватное, тут дело в построении условии цикла, а все от говнокодинга, нахрена каждый раз пересчитывать размерность массива если это можно сделать ОДИН РАЗ?!
    PHP:
    for ($i 0$i count($array); $i++)
    {
        
    //...code
    }
    нужно использовать вот такую конструкцию:
    PHP:
    for ($i 0,$cnt=count($array);$i $cnt;$i++)
    {
        
    //...code
    }
     
  3. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.037
    Симпатии:
    702
    что там у тебя в условии через count считать? $all_links этоже не массив а текст у тебя получается. попробуй что-то вроде этого
    PHP:
    <?php
    $linkfile
    =file('file.txt');
    $c count($linkfile);
    echo 
    "Старт: всего ссылок - ".count($linkfile)."<br>"
    for (
    $t 0$t $c$t++){ 
    $links file_get_contents($linkfile[$t]); 
    echo 
    $t." - <strong>Парсим: </strong> <a href='".$linkfile[$t]."' target='_blank'>".$linkfile[$t]."</a><br>"
    preg_match_all('#<a.*?href=[\'"]?([^\'" >]*)#'$links$result); 
    $tc=count($result[1]);
    for (
    $i 0$i $tc$i++) { 
    if (
    strpos($result[1][$i], $sign)){ 
    $a_links $result[1][$i]."\n"
    $all_links $all_links.$a_links


    echo 
    $all_links."<br>"
    $array_all_links=explode("\n",$all_links);
    if (
    count($array_all_links) == 0){ 
    echo 
    "Не одной ссылки не спаршенно!<br>"
    echo 
    "<span style='color:red;'>Удаляем данную ссылку из списка!</span>"flush();
    unset(
    $linkfile[$t]); 
    echo 
    "<span style='color:red;'>".$linkfile[$t]."</span>"

    unset(
    $all_links); 
    echo 
    "<br>---------------------------------------------------------------------------------------------<br>"flush();
    }
    $f fopen('newfile.txt'"w"); 
    foreach(
    $linkfile as $value){
    fwrite($f,trim($value)."\n");
    }
    fclose($f); 
    или так
    PHP:
    <?php
    $linkfile
    =file('file.txt');
    $c count($linkfile);
    echo 
    "Старт: всего ссылок - ".count($linkfile)."<br>"
    for (
    $t 0$t $c$t++){ 
    $links file_get_contents($linkfile[$t]); 
    echo 
    $t." - <strong>Парсим: </strong> <a href='".$linkfile[$t]."' target='_blank'>".$linkfile[$t]."</a><br>"
    preg_match_all('#<a.*?href=[\'"]?([^\'" >]*)#'$links$result); 
    $tc=count($result[1]);
    for (
    $i 0$i $tc$i++) { 
    if (
    strpos($result[1][$i], $sign)){ 
    $a_links $result[1][$i]."\n"
    $all_links $all_links.$a_links


    if (!
    $all_links){ 
    echo 
    "Не одной ссылки не спаршенно!<br>"
    echo 
    "<span style='color:red;'>Удаляем данную ссылку из списка!</span>"flush();
    unset(
    $linkfile[$t]); 
    echo 
    "<span style='color:red;'>".$linkfile[$t]."</span>"
    } else {
    echo 
    $all_links."<br>";
    unset(
    $all_links); 
    }
    echo 
    "<br>---------------------------------------------------------------------------------------------<br>"flush();
    }
    $f fopen('newfile.txt'"w"); 
    foreach(
    $linkfile as $value){
    fwrite($f,trim($value)."\n");

    fclose($f);