PHP задачи с собеседований
3.05K subscribers
476 photos
6 videos
11 files
360 links
Задачи, тесты и теоретические вопросы по PHP.

Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny
Download Telegram
Вопрос от пользователя

Слияние одинаковых массивов PHP с заполнением значений если не пустое

Всем доброго времени суток! Имею два массива. Первый со значениями по некоторым складам [free_to_sell_amount], а второй со всеми складами но пустыми значениями [free_to_sell_amount]. Пытаюсь объединить их, чтобы в результате получить массив по всем складам и заполненными значениями из второго массива, там где есть.

Первый массив со складами где есть остатки (free_to_sell_amount)

Array
(
[sku] => 1312583660
[item_code] => 774420-10
[item_name] => 774420 Legrand Valena / Розетка белая 2К+З (10шт) ОригиналРитейлГрупп
[stock] => Array
(
[0] => Array
(
[warehouse_name] => ХОРУГВИНО_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 1
[reserved_amount] => 1
)

[1] => Array
(
[warehouse_name] => Новосибирск_РФЦ_НОВЫЙ
[promised_amount] => 0
[free_to_sell_amount] => 7
[reserved_amount] => 0
)

[2] => Array
(
[warehouse_name] => Екатеринбург_РФЦ_НОВЫЙ
[promised_amount] => 0
[free_to_sell_amount] => 11
[reserved_amount] => 0
)

[3] => Array
(
[warehouse_name] => САМАРА_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 18
[reserved_amount] => 0
)

[4] => Array
(
[warehouse_name] => СОФЬИНО_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 24
[reserved_amount] => 0
)

[5] => Array
(
[warehouse_name] => СПБ_ШУШАРЫ_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 24
[reserved_amount] => 0
)

)

)

Второй массив (со всеми складами, но пустыми значениями free_to_sell_amount)
Array
(
[sku] => 1312583660
[item_code] => 774420-10
[item_name] => 774420 Legrand Valena / Розетка белая 2К+З (10шт) ОригиналРитейлГрупп
[stock] => Array
(
[0] => Array
(
[warehouse_name] => ХОРУГВИНО_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)

[1] => Array
(
[warehouse_name] => Санкт_Петербург_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)

[2] => Array
(
[warehouse_name] => САМАРА_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)

[3] => Array
(
[warehouse_name] => ПЕТРОВСКОЕ_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)

[4] => Array
(
[warehouse_name] => СОФЬИНО_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)

[5] => Array
(
[warehouse_name] => ПУШКИНО_1_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)

[6] => Array
(
[warehouse_name] => Новосибирск_РФЦ_НОВЫЙ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)

[7] => Array
(
[warehouse_name] => Екатеринбург_РФЦ_НОВЫЙ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)

[8] => Array
(
[warehouse_name] => СПБ_ШУШАРЫ_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)

[9] => Array
(
[warehouse_name] => Ростов_на_Дону_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)

[10] => Array
(
[warehouse_name] => НОВОРОССИЙСК_МРФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)

[11] => Array
(
[warehouse_name] => ЖУКОВСКИЙ_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)

[12] => Array
(
[warehouse_name] => ПУШКИНО_2_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)

[13] => Array
(
[warehouse_name] => АДЫГЕЙСК_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)


[14] => Array
(
[warehouse_name] => НОГИНСК_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)

[15] => Array
(
[warehouse_name] => ВОРОНЕЖ_2_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)

[16] => Array
(
[warehouse_name] => ГРИВНО_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)

[17] => Array
(
[warehouse_name] => ТВЕРЬ_РФЦ
[promised_amount] =>
[free_to_sell_amount] =>
[reserved_amount] =>
)

)

)

Хочу получить такой массив

Array
(
[sku] => 1312583660
[item_code] => 774420-10
[item_name] => 774420 Legrand Valena / Розетка белая 2К+З (10шт) ОригиналРитейлГрупп
[stock] => Array
(
[0] => Array
(
[warehouse_name] => ХОРУГВИНО_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 1
[reserved_amount] => 1
)

[1] => Array
(
[warehouse_name] => Санкт_Петербург_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)

[2] => Array
(
[warehouse_name] => САМАРА_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 18
[reserved_amount] => 0
)

[3] => Array
(
[warehouse_name] => ПЕТРОВСКОЕ_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)

[4] => Array
(
[warehouse_name] => СОФЬИНО_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 24
[reserved_amount] => 0
)

[5] => Array
(
[warehouse_name] => ПУШКИНО_1_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)

[6] => Array
(
[warehouse_name] => Новосибирск_РФЦ_НОВЫЙ
[promised_amount] => 0
[free_to_sell_amount] => 7
[reserved_amount] => 0
)

[7] => Array
(
[warehouse_name] => Екатеринбург_РФЦ_НОВЫЙ
[promised_amount] => 0
[free_to_sell_amount] => 11
[reserved_amount] => 0
)


[8] => Array
(
[warehouse_name] => СПБ_ШУШАРЫ_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 24
[reserved_amount] => 0
)

[9] => Array
(
[warehouse_name] => Ростов_на_Дону_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)

[10] => Array
(
[warehouse_name] => НОВОРОССИЙСК_МРФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)

[11] => Array
(
[warehouse_name] => ЖУКОВСКИЙ_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)

[12] => Array
(
[warehouse_name] => ПУШКИНО_2_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)

[13] => Array
(
[warehouse_name] => АДЫГЕЙСК_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)

[14] => Array
(
[warehouse_name] => НОГИНСК_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)

[15] => Array
(
[warehouse_name] => ВОРОНЕЖ_2_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)

[16] => Array
(
[warehouse_name] => ГРИВНО_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)

[17] => Array
(
[warehouse_name] => ТВЕРЬ_РФЦ
[promised_amount] => 0
[free_to_sell_amount] => 0
[reserved_amount] => 0
)

)

)

Делаю так, но нечего не выходит

$general_array = array_merge($array1, $array2);
Вопрос от пользователя

Сумма из чисел массива, наиболее близкая к определенному числу с минимальным остатком


Подскажите правильный алгоритм, или решение на php.

Есть число

x = 112;
и массив

[20,30,38]
И число, и массив могут меняться.

Мне нужно получить число, максимально близкое к числу X, из суммы элементов массива, при условии, что числа из массива могут повторяться.

То есть из примера, который мне нужен

20+20+20+20+30 = 110 ( остаток 2)
или

30+30+30+20 = 110 ( остаток 2)
PHP задачи с собеседований
👍1
Вопрос от пользователя

Не отправляется почта mail() с сервера


Пробую вот так:

<?php
if(!mail("куда отправляем", "я письмо", "я сообщение"))
echo 'не пашет ';
?>
Нажимаю Enter, пишет не пашет. Пробовал на другом хостинге всё работает. Что делать? Обращаться в тех поддержку? Или самому что-то исправлять?

PHP задачи с собеседований
Вопрос от пользователя

добавить информацию через форму в бд

не добавляется информация через форму, после ввода в инпут нажимаю на кнопку и ничего не происходит, в базе информация не появляется

<form method="post" action="add_track.php" class="block"></form>
<input type="text" placeholder="Введите название трека" class="name" name="name">
<input type="text" placeholder="Введите исполнителя трека" class="ispol" name="ispol">
<input type="text" placeholder="Введите ссылку на изображение трека" class="link" name="link">
<button type="submit" class="add"></button>
</form>



<?php
require_once 'connect.php';


$name = $_POST['name'];
$ispol = $_POST['ispol'];
$link = $_POST['link'];

mysqli_query($connect, "INSERT INTO `track` (`name`, `performer`, `img`)
VALUES ('$name', '$ispol', '$link')");

header('Location: /')

?>


PHP задачи с собеседований
👎5
Вопрос от пользователя

нужно расставить по 4 объекта на страницу


пытался расставить объекты по 4 штуки, следующие должны переноситься на новую строку, но не получается, переносятся только последние 4 объекта код html

<div class="container">
<?php foreach($info as $data): ?>
<div class="item">
<div class="b_ava">
<img src="<?= $data['img']; ?>" class="ava">
<h3 class="name"><?= $data['name']; ?></h3>
<h3 class="name"><?= $data['performer']; ?></h3>
<span class="name"><?= $data['rating']; ?></span>
</div>

<?php endforeach; ?>
</div>
</div>


.container{
display: flex;
position: relative;
max-width: 2000px;
max-height: 2000px;
left: 300px;
bottom: 500px;
}

.item{
display: flex;
flex-wrap: wrap;
grid-gap: 70px;
}

.b_ava{
width: 252px;
height: 355px;
background-color: #1d1c21;
box-shadow: inset 0px 0px 4px 2px #1d1c21;
border-radius: 20px;
}

.name{
color: aliceblue;
font-size: 18px;
text-align: center;
font-family: Gill Sans, sans-serif;
padding-top: 10px;
}

.ava{
position: relative;
left: 33px;
top: 25px;
border-radius: 20px;
width: 190px;
height: 190px;
}


PHP задачи с собеседований
👎5
Вопрос от пользователя

Как сделать массовую замену URL ссылок в phpMyAdmin для ocStore?

Подскажите, пожалуйста, какой нужно сделать SQL запрос в phpMyAdmin чтобы сделать массовую замену ссылок для ocStore 3??
PHP задачи с собеседований
Вопрос от пользователя

В шаблонах blade laravel для указания путей используется asset(), есть ли что-то подобное в компонентах vue 3?


Пример

<script src="{{ asset('js/script.js') }}"></script>

PHP задачи с собеседований
Вопрос от пользователя

Как сделать вывод тегов относящихся только к текущей категории, в категории товаров Prestashop 1.6

Подскажите пожалуйста как можно сделать вывод тегов товаров, которые относятся только к текущей категории? В престе по-умолчанию теги выводятся все сразу... есть такой код вставляю в category.tpl:

<div class="producttags"> 

{foreach from=$products item=product name=products}
{foreach from=Tag::getProductTags($product.id_product) key=k item=v}
{foreach from=$v item=value}
{if isset($tags) && !empty($tags) && $tags > 0}
<a href="{$link->getPageLink('search', true, NULL, "tag={$value|urlencode}")}">{$value|escape:html:'UTF-8'}</a>
{else}
{l s='Пока что здесь ничего нет' mod='blocktags_mod'}
{/if}
{/foreach}
{/foreach}
{/foreach}

</div>


Он выводит все как нужно, НО также выводит и пустые значения. Т.е. если в товаре тег не заполнен, то он все равно выводится как пустая ссылка...Подскажите пожалуйста как можно выводить теги для конкретной категории, если они заполнены в товаре, и не выводить пустые значения.

PHP задачи с собеседований
Вопрос от пользователя

Как правильно разбить строку по определенному символу


Имеется строка вида: 192.168.0.1@User;p@ssword. Мне нужно положить в массив отдельно 192.168.0.1, User и p@ssword, чтобы пользоваться этими данными по отдельности. Дело в том, что, если запись будет в таком виде - 192.168.0.1@User;password, то мне удается получить значения через этот код:

$data = explode("@", "192.168.0.1@User;password");
$data2= explode(";", $data[1]);
В итоге я пользуюсь всеми тремя значениями:

$data[0] (192.168.0.1)
$data2[0] (User)
$data2[1] (password)

Получается, что проблема возникает, когда в строке два символа - @.

Помогите, пожалуйста, разобраться.

PHP задачи с собеседований
Вопрос от пользователя

Как перенести бд sql с помощью скрипта в файле по крону на другой хостинг. Подскажите куда копать?

Как перенести бд c помощью скрипта sql и php, подскажите куда копать, уже долго ищу в гугле, но не нашёл примера или объяснений?

PHP задачи с собеседований
Вопрос от пользователя

Не выводятся ACF поля через Ajax WordPress

Переменная $pvar выводится и меняется при выборе option в списке select - это работает. Но мне ещё нужно вывести значения всех ACF полей что у меня в functions.php - они не выводятся. При выборе в селекте нужно выводить всё из полей.

То что у меня в functions.php:

add_action('wp_ajax_nopriv_ajax_slide','ajax_slide');
add_action('wp_ajax_ajax_slide','ajax_slide');

function ajax_slide(){
$pvar = $_POST['hash'];
echo $pvar;
?>

<?php if( have_rows('dobavit_punkt')): ?>
<?php
$field = get_sub_field_object( 'vybor_napravleniya');
$value = $field['value'];

if($value == $pvar): ?>
<?php while ( have_rows('dobavit_punkt') ) : the_row(); ?>
<div> // тут поля </div>
<?php endwhile; ?>
<?php endif; ?>
<?php endif; ?>
<?php
wp_die();
}

Мой скрипт ajax-script.js:


jQuery(document).ready(function($){

$("select#selectedop").on( "change", function() {
let thisselval = $(this).val();

$.ajax({
type:"POST",
url: my_ajax_name.ajax_url,
data:{
'action':'ajax_slide',
'hash': thisselval
}, success: function (data){ //received content
$(".wr").empty();
$(".wr").append(data);

} });

});
});

Я его локализовал в functions.php:

wp_enqueue_script( 'service-ajax', get_template_directory_uri() . '/app/js/ajax-script.js', array( 'jquery' ), '0.0.2', true );
wp_localize_script( 'service-ajax', 'my_ajax_name', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );




PHP задачи с собеседований
Вопрос от пользователя

Как хранить списки для каждого врача? PHP

Делаю
API, и встал вопрос о том как хранить специальности и дополнительное образование врача в базе? В HTML это выводится так

<div class="doctor-card__about--row">
<div class="doctor-card__about--title">
Дополнительное образование:
</div>
<div class="doctor-card__about--text">
2020 г. Профессиональная программа "Нейрохирургия", Сертификационный курс по специальности «нейрохирургия», Российская Медицинская Академия Последипломного образования <br>
2017 г. Профессиональная программа "Неотложная нейрохирургия" ФГБОУ ВО МГМСУ им. Ф. И. Евдокимова Минздрава России. <br>
2014 г. Реабилитация пациентов с различными заболеваниями и травмами позвоночника и спинного мозга», Московский НПЦ медицинской реабилитации, восстановительной и спортивной медицины
</div>
</div>
<div class="doctor-card__about--row">
<div class="doctor-card__about--title">
Специализация:
</div>
<div class="doctor-card__about--text">
<ul>
<li>Лечение геморроя метолом латексного лигирования геморроидальных узлов</li>
<li>Удаление хронической анальной трещины</li>
<li>Современные методы консервативной терапии трещин</li>
<li>Удаление тромбов из наружных геморроидальных узлов (тромбоэктопия)</li>
</ul>
</div>
</div>



Вот мой метод для добавления врача, я не понимаю как тут хранить списки чтобы их можно было например через , писать в форме админки. Использую RedBean

$additional_education = $_POST['additional_education'] ?? '';
$specialties = $_POST['specialties'] ?? '';
$doctor = R::dispense('doctors');
$doctor->photo = $photo; //Фото доктора
$doctor->fio = $fio; //ФИО доктора
$doctor->experience_about = $experience_about; //Какой стаж
$doctor->experience = $experience; //Стаж доктора
$doctor->specialty = $specialty; //Специализация
$doctor->price = $price; //Стоимось первичного приёма
$doctor->education = $education; //Образование
$clinic = R::load('clinics', $clinicId);
if ($clinic->id) {
$doctor->id_clinic = $clinic->id;
} else {
echo json_encode(['status' => 'error', 'message' => 'Клиника не найдена'], JSON_UNESCAPED_UNICODE);
exit;
}
$id = R::store($doctor);
echo json_encode(['status' => 'success', 'message' => 'Доктор успешно добавлен', 'doctor_id' => $id], JSON_UNESCAPED_UNICODE);




PHP задачи с собеседований
👎2