Ответы пользователя по тегу PHP
  • Как сделать рекурсивное, бесконечное меню?

    @alexanderzanin
    Вот пример без запроса к базе
    <?php
    
    $arr = array(
        array('id'=>100, 'parentid'=>0, 'name'=>'a'),
        array('id'=>101, 'parentid'=>100, 'name'=>'a'),
        array('id'=>102, 'parentid'=>101, 'name'=>'a'),
        array('id'=>103, 'parentid'=>101, 'name'=>'a'),
        array('id'=>104, 'parentid'=>103, 'name'=>'a'),
        array('id'=>105, 'parentid'=>103, 'name'=>'a'),
        array('id'=>106, 'parentid'=>0, 'name'=>'a'),
        array('id'=>107, 'parentid'=>106, 'name'=>'a'),
    );
    
    $new = array();
    foreach ($arr as $a){
        $new[$a['parentid']][] = $a;
    }
    $tree = createTree($new, array($arr[0]));
    var_dump($tree);
    
    function createTree(&$list, $parent){
        $tree = array();
        foreach ($parent as $k=>$l){
            if(isset($list[$l['id']])){
                $l['children'] = createTree($list, $list[$l['id']]);
            }
            $tree[] = $l;
        }
        return $tree;
    }
    Ответ написан
    1 комментарий
  • Что наследуется в ООП? Как работает наследование?

    @alexanderzanin
    1. Все верно, все наследуется.
    2. Тут нужно понимать, для чего существуют public, protected, private. Public используется для использования функционала класса в других частях программы. Если у класса один метод public и условно 10 private методов, то в приватных методах скрыта реализация функционала, а public уже отдает или получает, или то и другое. Классу, который использует public метод другого класса не важно, как работает все внутри приватных методов. Поэтому и смысла нет в изменении public на protected или private. Иначе ваш класс становиться замкнутым и бесполезным.
    3. тут можно почитать про reflection
    Ответ написан
    8 комментариев
  • Как сделать регулярку PHP для удаления определенного текста?

    @alexanderzanin
    $string = 'https://vk.com/none';
    
    function find(string $str) {
        $result = '';
        if (preg_match('/^https:\/\/vk.com\//', $str)) {
            $result = substr($str, 15);
        } else {
            $result = $str;
        }
    
        return $result;
    }
    Ответ написан
    Комментировать