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

    Shlop
    @Shlop
    Full Stack Developer (PHP/Laravel/JavaScript)
    Если я верно понял задачу то один из вариантов такой.
    Если в $arr1 есть ID-шники которых нет в $arr2 то на некоторых элементах HINT не заполним.
    Если в $arr2 есть все ID-шники которые есть в $arr1 и даже больше, то все элементы $arr1 должны будем заполнить;

    Но есть и другой вариант, можно из $arr2 сделать массив где индексы это ID, и тогда можно легко брать значения просто по индексу, типа такого $arr2[$id]
    $arr1 = [
        [
            "ID" => 11,
            "HINT" => "",
        ],
        [
            "ID" => 45,
            "HINT" => "",
        ],
        [
            "ID" => 1,
            "HINT" => "",
        ],
        [
            "ID" => 2,
            "HINT" => "",
        ],
        [
            "ID" => 3,
            "HINT" => "",
        ],
    ];
    
    $arr2 = [
        [
            "PROPERTY_ID" => 11,
            "FILTER_HINT" => "ПОДСКАЗКА-11",
        ],
        [
            "PROPERTY_ID" => 45,
            "FILTER_HINT" => "ПОДСКАЗКА-45",
        ],
        [
            "PROPERTY_ID" => 53,
            "FILTER_HINT" => "",
        ],
    ];
    
    foreach ($arr1 as &$item1) {
        // Берём ID обрабатываемого элемента массива
        $id = $item1["ID"];
        // Проходимся по массиву с ответами и ищем элмент по ID
        foreach ($arr2 as $item2) {
            // Если ID равны запишем данные из FILTER_HINT в HINT элемента
            if ($id == $item2["PROPERTY_ID"]) {
                $item1["HINT"] = $item2["FILTER_HINT"];
                // Завершим цикл по $arr2
                break;
            }
        }
    }
    // Ссылка $item1 на последний элемент массива останется после окончания цикла foreach.
    // Рекомендуется уничтожать её с помощью unset().
    // Подробнее про это и foreach в документации по PHP https://www.php.net/manual/ru/control-structures.foreach.php
    unset($item1);
    
    // Выводим результат
    echo '<pre>';
    var_dump($arr1);
    echo '</pre>';
    Ответ написан
    1 комментарий
  • Почему класс не найден при автозагрузке классов в папке с помощью composer?

    Shlop
    @Shlop Автор вопроса
    Full Stack Developer (PHP/Laravel/JavaScript)
    Попробовал так же в корне всё разместить, теперь вроде работает.
    Только не в index.php всё написал (что бы не редактировать index.php modx) а просто создал тестовый файл qwe.php.

    В нём:
    <?php
    
    include "vendor/autoload.php";
    
    use App\Test;
    
    Test::get();
    Ответ написан
    Комментировать
  • Как в этот php который генерирует карту сайта добавить lastmod?

    Shlop
    @Shlop
    Full Stack Developer (PHP/Laravel/JavaScript)
    Можно вот так попробовать
    $date = date('Y-m-d\TH:i:sP');
    echo "</loc>\n<changefreq>daily</changefreq>\n<priority>1.0</priority>\n<lastmod>{$date}</lastmod>\n</url>";

    Либо без переменной вот так (этот вариант лучше кажется):
    echo "</loc>\n<changefreq>daily</changefreq>\n<priority>1.0</priority>\n<lastmod>".date('Y-m-d\TH:i:sP')."</lastmod>\n</url>";
    Ответ написан
  • Почему false срабатывает как true?

    Shlop
    @Shlop
    Full Stack Developer (PHP/Laravel/JavaScript)
    Скорее всего из за того что false приходит в виде строки, и условие соответственно выполняется, потому что люба строка это уже true, пробуйте что-то типа такого:
    $.ajax({
    	url: '/action_ajax_form.php',
    	type: "POST",
    	data:  $("#feedback-form_03").serialize(),
    	success: function(response) {
    		if (response !== "false") {
    			console.log(response);
    			console.log('<div id="message_03">Ваше сообщение успешно отправлено. Спасибо!<br />Мы свяжемся с вами ближайшее время!</div>');
    		}
    	}
    }
    })
    Ответ написан
  • Как на php вернуть конкретную ошибку при оправке формы Ajax?

    Shlop
    @Shlop
    Full Stack Developer (PHP/Laravel/JavaScript)
    Код может выглядеть вот так:
    $("#form").submit(function(e) {
            e.preventDefault();
                $.ajax({
                    dataType: 'json', //Тип данных, в котором ожидается получить ответ от сервера.
                    type: "POST",
                    url: "send.php",
                    data: $(this).serialize()
                }).done(function(response) { // В response находится ответ от сервера который отправлен через echo из send.php
                    if(!response.status) {
                        alert("Что-то не так");
                    }
                    else {
                        alert("Всё ок!");
                    }
                }).fail(function () {
                    
                });
                return false;
            });

    // Если такой логин есть, значит ошибка
    if ( R::count('users', "login = ?", array($_POST['login'])) > 0) {
    	$response = [
    		'messages_error' => 'Пользователь с таким Логином уже существует!',
    		'status' => false,
    	];
    	echo json_encode($response); // Отправляем json ответ от сервера
    } 
    else {
    	// Если логин уникальный - регистрируем юзера
    	$user = R::dispense('users');
    	$user->login = $_POST['login'];
    	$user->password = $_POST['password'];
    	R::store($user);
    }


    И кстати как инструмент для просмотра запросов к серверу и ответов от сервера, можно использовать вкладку Network в DevTools браузер Google Chrome, ну и в других браузерах тоже есть такая вкладка
    5d4740daa6684529130203.png
    Ответ написан
  • Как написать неполное условие PHP?

    Shlop
    @Shlop
    Full Stack Developer (PHP/Laravel/JavaScript)
    Скорее всего вам поможет вот эта функция
    https://www.php.net/manual/ru/function.stristr.php
    На данной странице "Пример #2" вроде как раз ваш случай. Но данная функция регистронезависимая, другими словами она не различает "привет" от "Привет"
    Ответ написан
    3 комментария
  • Как лучше передавать данные для обработки скрипта?

    Shlop
    @Shlop
    Full Stack Developer (PHP/Laravel/JavaScript)
    Есть ещё способ через ajax, когда при отправке формы страница не перезагружается. Ajax запрос делается через javascript. На чистом javascript либо с помощью jquery либо используя axios https://github.com/axios/axios
    Ответ написан
    Комментировать