1. Начата процедура восстановления социальных групп. Лидерам старых и новых групп обязательно ознакомиться с регламентом проведения работ.

Помогите с циклами.

Тема в разделе 'Как сделать...', создана пользователем QuZ, 13 фев 2012.

  1. TopicStarter Overlay

    QuZ

    Добрый вечер. Помогите пожалуйста разобраться с циклом. Привел кусок кода, он правильно работает, если $pizza встречается какой-либо элемент из массива $tag. Проблема в том, что если мы не находим в данной строке какого-либо из элемента массива, тогда по коду получаем пустое значение в переменной $trimmed. Вот эту проблему и хотелось решить. Если мы находим какой-либо элемент из массива в данной строке - то в переменную $trimmed заносим отрезанную часть, иначе, в переменную $trimmed заносим $pizza..
    Спасибо, форумчанам.



    PHP:
    {
        
    $i "0";
        
    $tags = array ('>','прав.}','линзов.]');
        
    $pizza  "фара} п}ер}.прав. серая линзов. Xenon D2S";
     
        foreach (
    $tags as $tag)
        {
        
    $piecess explode($tag$pizza);
            
    $i count ($piecess);
            if (
    $i >1)
            {
                
    $pieces explode($tag$pizza);
                
    $trimmed ltrim($pieces[1]);
            }
        }
        echo 
    trim ($trimmed ."<br>");
    }
  2. не вникал суть... потому что чет вообще не вкуриваю потребностей...
    Если после обработки переменная пастая то после цыкла проверьте и переровняйте и все...
  3. Код полный бред....

    Вы заносите постоянно при нахождении следовательно сохроняется только последнее найденое.
    Если нужны все значения то используйте $trimmed[] = ltrim($pieces[1]);
    Далее для распечатки implode('<br>', $trimmed); для обработки запустите цыкл.

    Если же всетаки у вас логика именно такая катороя описана то

    PHP:
    {
        
    $i "0";
        
    $tags = array ('>','прав.}','линзов.]');
        
    $pizza  "фара} п}ер}.прав. серая линзов. Xenon D2S";
     
        foreach (
    $tags as $tag)
        {
        
    $piecess explode($tag$pizza);
            
    $i count ($piecess);
            if (
    $i >1)
            {
                
    $pieces explode($tag$pizza);
                
    $trimmed ltrim($pieces[1]);
            }
        }
        
    $trimmed=trim($trimmed);
    if (
    $trimmed==''$trimmed=$pizza;
     
    echo 
    $trimmed.'<br>';
    }
  4. Код:
    $i = "0";
        $tags = array ('>','прав.}','линзов.]');
        $pizza  = "фара} п}ер}.прав. серая> линзов. Xenon D2S";
     
        foreach ($tags as $tag)
        {
        $piecess = explode($tag, $pizza);
            $i = count ($piecess);
            if ($i >1)
            {
                $pieces = explode($tag, $pizza);
                $trimmed = ltrim($pieces[1]);
            }
            elseif($i <= 1)
            {
              $trimmed = $pizza;
            }
        }
        echo trim ($trimmed ."<br>");
  5. Какой вообще смысл обходить весь цыкл !?
    Переверните масив и при первой находке сделайте break; если так и не вылетит сначит переровняете и все.
    Таким образом меньшая работа проделана будит ибо если вы считаете проблему в коде только с конечным значением в случае отсутствия нахождений тегов потому как ваш код ведет учет только последнего тега а не всех.
  6. TopicStarter Overlay

    QuZ

    Парни, мне скинули для пользования) Я читать код умею, писать - не пишу. Что тут написано - понимаю)) Человек, который писал это - не знаком с пхп - это видно. По поводу того, что он записывает последний найденный вариант - пока не особо важно, так-как я знаю, что будет максимум 1-на замена на строчку.
  7. Омг!
    Тогда зачем захламлять код циклом?!
    Лучше будет если вы поясните первоначальную задачу что вам вообще нужно было сделать. Тогда вам намного быстрее помогут, чем обсуждать этот непонятный кусок кода с холостым циклом.
  8. TopicStarter Overlay

    QuZ

    Не проблема. Делаю выгрузку из базы в массив строчки. Достаточно большое кол-во. Необходимо для каждой строчки проверить, имеется ли в ней набор слов, которые были занесены в массив. В моем примере ($tags) и если имеется - тогда отрезать по этому тегу все что после него из строчку из массива, иначе - передать в переменную строчку целиком.
  9. Нужно определить вхождение всех слов из $tags или одного из массива?
    А что делать если слов попадается 2? По какому отрезать? По первому?
  10. TopicStarter Overlay

    QuZ

    Всех слов. По поводу повторения - на данный момент такого не предвидится, это уже конечная доводка массива. Но наверное, лучший вариант - если встретится 2-ва тега - то обрезать по обоим.