• Как собрать многоуровневый массив?

    @HaveFun
    $text = 'Шла саша по шоссе и сосала сушку';
    
    $arWords = explode(' ',$text);
    function implodeAndNest($arWords,$firstElement = null){
      $arResult = array();
      foreach($arWords as $wordNum => $word){
        if($wordNum == 0){
          $result = array(implode(' ',array_slice($arWords,$wordNum)));
        }else{
          $result = array(implode(' ',array_slice($arWords,0,$wordNum)),implode(' ',array_slice($arWords,$wordNum)));
        }
        if(isset($firstElement))
          $result = array_merge(array($firstElement),$result);
        $arResult[] = $result;
      }
      return $arResult;
    }
    
    $arResult = array();
    foreach($arWords as $wordNum => $word){
      if($wordNum == 0){
        $arResult = implodeAndNest(array_slice($arWords,$wordNum));
      }else{
        $arResult = array_merge($arResult,array_values(implodeAndNest(array_slice($arWords,$wordNum),implode(' ',array_slice($arWords,0,$wordNum)))));
      }
    }
    
    // удаляем лишние результаты
    $arResult = array_values(array_map("unserialize", array_unique(array_map("serialize", $arResult))));
    
    echo '<pre>';
    print_r($arResult);
    echo '</pre>';
    Ответ написан
    5 комментариев
  • Как разобрать текст на массивы?

    @HaveFun
    $text = 'давайте выражаться культурно';
    
    $arWords = explode(' ',$text);
    
    function implodeAndNest($arWords){
      $arResult = array();
      foreach($arWords as $wordNum => $word){
        if($wordNum == 0){
          $arResult[] = implode(' ',array_slice($arWords,$wordNum));
        }else{
          $arResult[] = array(implode(' ',array_slice($arWords,0,$wordNum)) => implode(' ',array_slice($arWords,$wordNum)));
        }
      }
      return $arResult;
    }
    
    $arResult = array();
    foreach($arWords as $wordNum => $word){
      if($wordNum == 0){
        $arResult[] = implodeAndNest(array_slice($arWords,$wordNum));
      }else{
        $arResult[] = array(implode(' ',array_slice($arWords,0,$wordNum)) => implodeAndNest(array_slice($arWords,$wordNum)));
      }
    }
    
    echo '<pre>';
    print_r($arResult);
    echo '</pre>';
    Ответ написан
    9 комментариев
  • Нужен наставник по веб-программированию, поможете?

    @HaveFun
    Столько шума из ничего. Пишите контакты на nebk@bk.ru
    Поможем, если человек хороший.
    Ответ написан
    Комментировать
  • Как изменить вид урл?

    @HaveFun
    mod_rewrite используется для редиректа на другой адрес или подключения конкретного файла. Например, если известно, что за формирование страницы отвечает файл /nazvanie_categorii/index.php, то в .htaccess достаточно добавить
    RewriteRule /nazvanie-categorii /nazvanie_categorii/index.php

    Если же приложение использует CMS или фреймворк, то, как правило, подключается файл index.php из корневой директории и вопрос переходит в плоскость роутинга CMS/фреймворка.
    Ответ написан
    Комментировать
  • Как программно вывести форму из модуля в Drupal7?

    @HaveFun
    Если модуль является расширением этого модуля, то достаточно активировать его на странице управления блоками и добавить в нужный регион.
    Ответ написан
  • Как правильнее переопределить метод родительского класса?

    @HaveFun
    Если есть необязательные параметры или претенденты на это звание, то размещать их нужно справа. Тогда можно использовать такой вариант:

    abstract class GlobalClass {
        ...
        protected function isExists($value, $field) {
            return $this->db->isExists($this->table_name, $field, $value);
        }
    }
    ...
    class User extends GlobalClass {
        ...
        public function isExists($value, $field=null) {
            $field = 'login';
            return parent::isExists($value, $field);
        }
    }


    Менять порядок обязательных параметров слева не стоит. Если он у родителя первый, то и у потомка должен быть первым.

    И судя по
    public function isExists($login) {
    		return $this->isExists("login", $login);
    	}
    следующей ошибкой будет Maximum function nesting level. Используйте parent.
    Ответ написан
    Комментировать