• Как вытащить значение из массива?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    $array = [...];
    $del_val = '137';
    
    // В современном PHP
    $data = array_filter($array, fn (array $item): bool => $item['tariff_id'] == $del_val);
    
    // Если у вас старая версия
    $data = array_filter($array, function (array $item) use ($del_val): bool {
        return $item['tariff_id'] == $del_val;
    });
    
    $item = end($data);
    echo $item['mode_id'];
    
    // Но можно и вашу версию доработать
    $data = null;
    foreach ($array as $arr) {
        if ($arr['tariff_id'] == $del_val) {
            $data = $arr;
        }
    }
    
    echo $data ? $data['mode_id'] : 'not found';
    Ответ написан
    6 комментариев
  • Не работает js на jquery-3.7.0?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    В вашем коде вы используете неправильные имена обработчиков для успеха и ошибки ajax-запроса. Вместо done и fail используйте success и error, соответственно.

    UPD:
    Вот стандартный пример ajax-запроса:
    $.ajax({
        url: 'https://domain.com/router/',
        method: 'post', // NOT A TYPE
        data: JSON.stringify({ ... }),
        dataType: 'application/json; charset=utf-8',
        success: (response) => { ... },
        error: (response) => { ... }
    })


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

    sanchezzzhak
    @sanchezzzhak
    Ля ля ля...
    Вообще это называется https://en.m.wikipedia.org/wiki/Cross-correlation
    Думаю подойдёт
    https://github.com/sapientpro/image-comparator

    Обратите на метод hashImage результат этой функции нужно сохранить в БД.
    Лучше всего чекать всегда один размер, то есть файл который загружают уменьшать до приемлемого размера, получать хэш и сравнивать с базой
    Также загружаемый файл чекать на ориентацию (перевёрнуто ли картинка) и исправлять в exif эта информация есть.
    Ответ написан
    Комментировать
  • Как вытащить строку из текста?

    vhood
    @vhood
    Не забывайте отмечать решения
    $str = '
    текст текст текст текст текст
    <tr><td>Габариты заводской упаковки (длина, ширина, высота): <b>35 x 16 x 9</b> см. </td></tr>
    <tr><td>Габариты упаковочной коробки (длина, ширина, высота): <b>40 x 21 x 14</b> см. </td></tr>
    текст текст текст текст текст
    ';
    
    preg_match('/Габариты упаковочной коробки.*<b>(.*)<\/b>/', $str, $matches);
    
    $value = array_key_exists(1, $matches) ? $matches[1] : null;
    
    var_dump($value);
    
    // 40 x 21 x 14
    Ответ написан
    1 комментарий
  • Как решить проблему по перезаписыванию resolv.conf?

    ValdikSS
    @ValdikSS
    1. Ищем официальную документацию на CentOS 7. Находим.
    2. Ссылки на смену DNS нет, но есть ссылки на документацию RedHat 7. Переходим.
    3. Открываем раздел Configuring and managing networking > Chapter 33. .... Бинго!


    Смотрите, как просто!
    Ответ написан
    1 комментарий
  • Как отсортировать массив?

    @Akina
    Сетевой и системный админ, SQL-программист.
    SELECT name, `text`
    FROM product
    JOIN product_attribute USING (product_id)
    JOIN attribute_description USING (attribute_id)
    -- JOIN attribute USING (attribute_id)   -- таблица в запросе не нужна
    GROUP BY 1, 2
    HAVING COUNT(*) > 1;

    fiddle

    Если нужна именно сортировка как в эталоне - ну добавить ORDER BY MAX(attribute_id)

    Таблица attribute потребуется лишь в случае, если данные из неё нужны (например, в запрос добавится отбор по значению attribute_group_id).

    Если надо сравнивать атрибуты у более чем 2 товаров, то соотв. образом откорректировать условие пост-отбора. Например, для 3 товаров и атрибутов, имеющихся у всех трёх, это будет HAVING COUNT(*) = 3
    Ответ написан
  • Как сформировать запрос к БД?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Для MySQL 8.0 и выше
    WITH `cte` (`id`, `row`) AS (
       SELECT `id`, ROW_NUMBER() OVER `win`
         FROM `product`
         WINDOW `win` AS (PARTITION BY `sku` ORDER BY `quantity` = 0, `price`)
     )
     UPDATE `cte`
       JOIN `product` USING (`id`)
       SET `product`.`status` = (`cte`.`row` = 1)

    Для старых версий MySQL
    UPDATE `product` AS `p` 
      LEFT JOIN (
        SELECT `t`.`sku`, MIN(`p`.`id`) AS `id`
          FROM (
            SELECT `sku`, MIN(`price`) AS `price`
              FROM `product`
              WHERE `quantity` != 0
              GROUP BY `sku`
          ) AS `t`
          JOIN `product` AS `p`
            ON `p`.`sku` = `t`.`sku` AND `p`.`price` = `t`.`price`
          WHERE `p`.`quantity` != 0
          GROUP BY `t`.`sku`
      ) AS `i` ON `i`.`id` = `p`.`id`
      SET `p`.`status` = (`i`.`id` IS NOT NULL);
    Ответ написан
    4 комментария