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

    @dimoff66
    Кратко о себе: Я есть
    Для разработки можно либо сгенерировать фейковые или как их еще называют моковые данные, разрабатывать на них, если их недостаточно для полноты тестирования, то заказчик может предоставить данные базы.
    Ответ написан
  • Почему возникает ошибка "Call to a member function fetch() on boolean"?

    @dimoff66
    Кратко о себе: Я есть
    Ошибка очень красноречивая. Она означает, что вы пытаетесь вызвать метод fetch у значения типа Boolean, это означает что переменная result содержит значение типа boolean, то есть запрос вернул false

    Чтобы этой ошибки не было, нужно писать
    if ($result = $db->query('SELECT id, name, price FROM product '
                    . 'WHERE status = "1"'
                    . 'ORDER BY id DESC '                
                    . 'LIMIT ' . $count)) {
        // твой код
    } else {
        else echo($db->error);
    }
    Ответ написан
  • Насколько полное изучение Java c работой над реальными проектам поможет php программисту в его работе?

    @dimoff66
    Кратко о себе: Я есть
    Если появится возможность пройдите курс по scala вместо java, это будет действительно хорошим расширением кругозора и пониманием множества паттернов. Плюс удовольствие от самого креативного на сегодняшний день ЯП. Поможет ли это в работе с PHP? Боюсь что помешает. Потому что после знакомства со скала, работать с PHP может только конченый мазохист.
    Ответ написан
    7 комментариев
  • Как найти все дубликаты в многомерном массиве?

    @dimoff66
    Кратко о себе: Я есть
    Если предположить что пользоваться методами работы с массивами вы умеете, то алгоритмически решение будет выглядить так:

    1) Сделайте массив плоским
    [
      ['alex', '111111'],
      ['alex', 2222222],
      ...
    ]


    2) Сгруппируйте по номеру телефона, чтобы получилось
    [
      '111111' => ['alex', 'john'],
      '222222' => ['alex']
      ...
    ]


    3) Отфильтруйте элементы где значение имеет больше одного элемента.

    Задача сделана

    UPDATE:
    Простой код

    $data = [
      'alex' => [
        "1111111",
        "2222222",
        "1726354"
      ],
      'john' => [
        "1111111",
        "3333333",
        "7162534"
      ],
      'michel' => [
        "1111111",
        "453453453",
        "3333333"
      ]
    ] ;
    
    $res = [];
    foreach ($data as $name => $phones) {
        foreach($phones as $phone) {
            if (!array_key_exists($phone, $res)) {
                $res[$phone] = [];
            }
            $res[$phone][] = $name;
        }    
    }
    
    print_r($res)


    Array
    (
        [1111111] => Array
            (
                [0] => alex
                [1] => john
                [2] => michel
            )
    
        [2222222] => Array
            (
                [0] => alex
            )
    
        [1726354] => Array
            (
                [0] => alex
            )
    
        [3333333] => Array
            (
                [0] => john
                [1] => michel
            )
    
        [7162534] => Array
            (
                [0] => john
            )
    
        [453453453] => Array
            (
                [0] => michel
            )
    
    )
    Ответ написан
    7 комментариев
  • Составить алгоритм перебора вариантов с весом?

    @dimoff66
    Кратко о себе: Я есть
    Если перестановки не нужны, то все просто. Каждый элемент либо входит в следующий вариант, либо нет. Соответственно делаете цикл 1 до pow(2, count($arr)). Преобразовываете каждое число цикла в двоичное встроенной функцией decbin, переворачиваете результат, и по нему составляете новый вариант - если 1 на соответствующем месте возвращенной decbin строки, то включаете элемент, если 0, то исключаете.

    $arr = [0 => 'a', 1 => 'b', 2 => 'c'];
    $res = [];
    
    for ($i = 1; $i < pow(2, count($arr)); $i++ ) {
        $bin = decbin($i);
        $case = "";
        foreach(str_split(strrev($bin)) as $ind => $symb) if ($symb == "1") $case .= $arr[$ind];
        $res[] = $case;
    }
    
    echo implode(", ", $res); // a, b, ab, c, ac, bc, abc
    Ответ написан
    Комментировать
  • Учу JavaScript, дальше - Vue.js, среднее знание PHP. На чем сделать CRUD-систему?

    @dimoff66
    Кратко о себе: Я есть
    Получайте удовольствие от того, что вам нравится делать сейчас. Будущее есть только у людей, кому нравится их работа, если вы выбираете то, что по чьим-то прогнозам будет популярнее в будущем, вы всю жизнь будете переживать, вам всегда будет казаться что в соседней кассе очередь движется быстрее. Не ввязывайтесь в эти гонки, просто делайте что вам нравится, работа на всех найдется.
    Ответ написан
    Комментировать
  • Где хранять токены React js + Rest api php?

    @dimoff66
    Кратко о себе: Я есть
    jwt можно хранить в sessionStorage
    Ответ написан
    Комментировать
  • Почему такое странное поведение in_array?

    @dimoff66
    Кратко о себе: Я есть
    Это поведение и вправду очень странное, но корректируется третьим параметром, выставленным в TRUE

    if (in_array($el, $arr, TRUE))
    Ответ написан
    Комментировать
  • Таблица products. В ней есть 3 поля по которым нужно выдавать конкретную строку. По GET запросу?

    @dimoff66
    Кратко о себе: Я есть
    Такая строчка работать не может, strpos возвращает число
    $sku == strpos($sku, 'https')

    Я бы переписал так

    $sku = isset($_GET['sku']) ? str_replace(" ", "", $_GET['sku']) : null;
    
    if (is_numeric($sku)) { // если начало с цифры
        $filter = ['idProduct', $sku, true];  
    } elseif (substr($sku, 0, 5) == 'https') { // если начало с https
        $beforeBlockMain = strstr($sku, '?block_main', true) || $sku;
        $filter = ['linkProduct', $sku . ($sku_new ? '/' : ''), false];
    } elseif ($sku) {
        $filter = ['name', "%" . $sku . "%", true];
    }
    
    if ($filter) {
        $attrName = $filter[0];
        $value = $filter[1];
        $operator = $value[0] == "%" ? " LIKE " : " = ";
        $limit = $filter[2];
    
        $sql = "SELECT * FROM products WHERE " . $attrName . $operator . $value . ($limit ? " LIMIT 0,1" : "");
    }
    Ответ написан
  • PHP или Javascript?

    @dimoff66
    Кратко о себе: Я есть
    По моему PHP делал психически больной человек. Только этим можно объяснить необходимость зачем-то ставить $ перед именами переменных и полное отсутствие собственных методов у массивов, что делает невозможным человеческий чейнинг, столь удобный при работе с оными. Javascript же вполне себе приятный и современный язык.

    Другое дело что для PHP есть нормальные фреймворки с ORM, а в node js все из разряда сделай сам.
    Ответ написан
  • Скорость проверки наличия значения в массиве. Что быстрее?

    @dimoff66
    Кратко о себе: Я есть
    Без разницы, главное чтобы значения были в массиве сортированы, а в базе индексированы. Тогда и там и там поиск будет происходить моментально. В массиве он естественно должен быть бинарным.
    Ответ написан
  • Как работает террарный оператор в PHP??

    @dimoff66
    Кратко о себе: Я есть
    echo "" == null; // true

    При использовании ?? проверяется условие

    echo "" === null; // false

    то есть строгое равенство первого аргумента значению null, а не просто пустое значение
    Ответ написан
    Комментировать
  • Что должен знать junior php на 2020 и стоит ли ходить на все собеседования?

    @dimoff66
    Кратко о себе: Я есть
    Люди должны понимать одну простую вещь. Программирование это не то что вы знаете, программирование это способность решать задачи. Если у вас есть эта способность - знания вы приобретете и работу рано или поздно, причем скорее рано чем поздно, найдете. Если нет этой способности - тут как фишка ляжет. Есть умственно отсталые работодатели, которые ставят знания выше способностей к кодированию.

    Просто сделайте сами проект, который вам интересен. Сделайте сайт, который вам интересен. Вы увидите, что на голом PHP писать его долговато, тогда вы попробуете фреймворки, и увидите что фреймворки облегчают и ускоряют написание кода. Да, технологии нужны, так как облегчают жизнь, но изучение их как таковых без реального применения, не сделает вас специалистом. Специалистом вас сделает написание собственного проекта.
    Ответ написан
    Комментировать
  • Как правильно разбить одну сроку опираясь на другую?

    @dimoff66
    Кратко о себе: Я есть
    Вырезал фигурные скобки в итоге, думаю не нужны, если нужны, то $patterns[] = $m[0];
    И это решение не зависит от того, есть ли в строке пробелы или нет.

    $s1 = 'Lorem {val1} dolor sit {val2}, consectetur adipisicing {val3}.';
    $s2 = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit.';
    
    $patterns = [];
    $pattern2 = preg_replace_callback('|\{([a-z0-9]+)\}|', function($m) use (&$patterns) {
        $patterns[] = $m[1];
        return '(.*)';
    }, $s1);
    
    preg_match('|' . $pattern2 . '|', $s2, $matches);
    $res = array_combine($patterns, array_slice($matches, 1));
    
    var_dump($res);
    Ответ написан
    Комментировать
  • Как вывести вместо ID городов их названия?

    @dimoff66
    Кратко о себе: Я есть
    fetch_assoc() возвращает очередную, в вашем случае первую, строку выборки
    Поэтому переменные $sqlcitygo и $sqlcityin у вас содержат ссылку на города первого трипа. С переменной $trip они никак не связаны и поэтому выдавать верное значение не могут в принципе. Если getTrip выдает результаты запроса, вам нужно сделать соединения в том запросе и поместить имена городов в отдельные поля.
    Ответ написан
    Комментировать
  • React + php, правильно ли я понял суть?

    @dimoff66
    Кратко о себе: Я есть
    По 0-2 выше ответили
    3. Нет, пользователь может посмотреть минифицированный файл и скорей всего понять из него не больше, чем вы поймете, открыв экзе файл в текстовом редакторе.
    Ответ написан
    Комментировать
  • Как правильно дополить регулярку?

    @dimoff66
    Кратко о себе: Я есть
    preg_match('/src=("([^"]+)"|'([^']+)')/', $img_src, $src);
    Ответ написан
    Комментировать
  • Продублировать все значения массива php?

    @dimoff66
    Кратко о себе: Я есть
    $arr = Array(1, 2, 3, 4, 5);
    $newArr = Array();
    foreach($arr as $elem) {
        $newArr[] = $elem;  $newArr[] = $elem;    
    }
    var_dump($newArr);
    Ответ написан
    Комментировать
  • Как удалить текст в строке до определенного символа?

    @dimoff66
    Кратко о себе: Я есть
    substr($str, 0, strrpos($str, $symb))
    Ответ написан
    Комментировать
  • Показать 100 слов после запятой?

    @dimoff66
    Кратко о себе: Я есть
    Все решения с explode на строках с большими данными будут работать неоптимально, без нужды создавая огромный массив, чтобы из него получить маленькую часть. Оптимальней найти сначала n-1 по счету запятую, отрезать строку и потом уже применять explode
    Ответ написан
    Комментировать