Web Мастерская Блог
Сообщество Web Мастеров. Тут собрано всё, чтобы написать свой первый сайт, запустить его в Интернет и поддерживать его в течении всей его работы.
PHP: Как составить из строки элемент массива
Стояла задача, составить из получаемой строки элемент массива. Допустим, есть такой массив:
Функция принимает строку:
С решением помогли на Хабр:
Оказалось, всё просто! С каждой итерацией мы переходим к следующему "вложению" массива, подбираясь к нужному нам элементу.
Проверяем:
На экране видим:
А значит всё правильно.
Для решении мой задачи, так же, есть библиотека Array Dot Notation, но я выбрал решение выше....
$arr = [
'k1' => [
'k2' => [
'k3' => [
'k4' => 'v'
]
]
]
];
Функция принимает строку:
k1/k2/k3
, используя данную строку, необходимо отдать элемент массива: $arr['k1']['k2']['k3']
.С решением помогли на Хабр:
<?php
$arr = [
'k1' => [
'k2' => [
'k3' => [
'k4' => 'v'
]
]
]
];
$s = "k1/k2/k3";
$array = explode('/', $s);
foreach ($array as $v)
{
$arr = $arr[$v];
}
Оказалось, всё просто! С каждой итерацией мы переходим к следующему "вложению" массива, подбираясь к нужному нам элементу.
Проверяем:
print_r($arr);
На экране видим:
['k4' => 'v']
А значит всё правильно.
Для решении мой задачи, так же, есть библиотека Array Dot Notation, но я выбрал решение выше....
- Жалоба
Cannot use object of type stdClass as array
При очередном написании скрипта на PHP, получил ошибку: Cannot use object of type stdClass as array, которая сообщает о невозможности использовать объект, как массив. То есть, я где то хочу получить значение из массива, который, на самом деле, не является массивом.
Смотрю по коду: Я использую функцию:
Логично, что дальше я могу писать так:
Чтобы работать с
Ошибка исправлена!...
Смотрю по коду: Я использую функцию:
json_decode
, чтобы перевести JSON в массив:
$data = json_decode($data);
Логично, что дальше я могу писать так:
$data['val']
, чтобы работать со значением val
... Я так думал, но нет...Чтобы работать с
$data['val']
, необходимо использовать функцию: json_decode
со вторым параметром. Второй параметр: true
, и это служит для возврата ассоциативного массива, а не объекта:
$data = json_decode($data, true);
Ошибка исправлена!...
Как правильно писать функцию в обработчике события?
Для примера пишем функцию:
Или так:
Теперь пробуем вызывать функцию, при клике на ссылку (
Первый вариант на jQuery:
Первый вариант на чистом JS:
Или, второй вариант на jQuery:
Второй вариант на чистом JS:
Какой из вариантов, по Вашему, будет работать, а какой нет? Работать будет первый вариант, как на jQuery, так и на чистом JS. Именно первый вариант является правильным....
display
, так:
function display(param) {
/* Code Function */
};
Или так:
var display = function(param) {
/* Code Function */
};
Теперь пробуем вызывать функцию, при клике на ссылку (
class="beginning"
):
Первый вариант на jQuery:
$(document).on('click', 'a.beginning', () => {
display('cover');
});
Первый вариант на чистом JS:
var beginning = document.querySelector('a.beginning');
beginning.addEventListener('click', function() {
display('cover');
});
Или, второй вариант на jQuery:
$(document).on('click', 'a.beginning', display('cover'));
Второй вариант на чистом JS:
var beginning = document.querySelector('a.beginning');
beginning.addEventListener('click', display('cover'));
Какой из вариантов, по Вашему, будет работать, а какой нет? Работать будет первый вариант, как на jQuery, так и на чистом JS. Именно первый вариант является правильным....
Nginx: Как запретить прямое обращение к файлам
Для одной задумки потребовалось запретить прямое обращение к файлам, при этом, чтобы сценарий движка, мог иметь полный доступ, к файлам. Сделать это надо было на Nginx. Мне помогли с этим и сейчас расскажу, что необходимо сделать, чтобы запретить.
Папка для запрета:
Код для конфига Nginx:
Многие пишут
После добавления строк выше, необходимо перечитать конфигурацию. Для этого я использую команду:
Готово. Теперь папка
Возможно, пригодится: Тема: Команды для настройки сервера....
Папка для запрета:
/app/XX/data/
. Вместо XX
идентификатор приложения, то есть цифры, которые постоянно меняются.Код для конфига Nginx:
location ~* /app/\d+/data/ {
valid_referers server_names;
if ($invalid_referer) {
return 404;
}
}
Многие пишут
return 403
(Запрещено), я решил, что будет лучше отправлять на 404 ошибку, нежели прямо давать понять, что сюда нельзя.После добавления строк выше, необходимо перечитать конфигурацию. Для этого я использую команду:
nginx -s reload
Готово. Теперь папка
data
скрыта от прямого обращения.Возможно, пригодится: Тема: Команды для настройки сервера....
jQuery: Как заменить класс у элемента
Для замены класса будем использовать две функции:
Допустим элемент
Делаем так:
Предварительно стоит проверить наличие класса, что необходимо заменить:
...
removeClass
: Удаляет класс или классы, что были указанны.addClass
: Добавляет указанный класс элементу.
Допустим элемент
div#taskInfo
имеет класс displayNone
, который нам необходимо заменить на displayInlineBlock
:
<div id="taskInfo" class="displayNone"></div>
Делаем так:
$('#taskInfo').removeClass('displayNone').addClass('displayInlineBlock');
Предварительно стоит проверить наличие класса, что необходимо заменить:
if ($('#taskInfo').hasClass('displayNone')) {
$('#taskInfo').removeClass('displayNone').addClass('displayInlineBlock');
};
- Apache 6
- CMS 3
- CSS 12
- FTP 1
- HTML 10
- JavaScript 32
- MySQL 16
- Nginx 7
- PHP 41
- phpMyAdmin 2
- SVG 3
- URL 1
- XML 3
- Безопасность 4
- Библиотека JS 12
- Графика 1
- Доменное имя 1
- Инструкция 1
- Кодировка 2
- Контент 6
- Мнение 2
- Монетизация сайта 2
- Настройка 3
- Оптимизация 2
- Ошибка 7
- Поисковая система 1
- Продвижение сайта 6
- Софт 1
- Старт 2
- Функция 1
- Хостинг | Сервер 3