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, но я выбрал решение выше....
- Жалоба
Вложенная буферизация ob_start()
Мой движок использует буферизацию. При написании одного модуля (Блог: Обработать файл перед его получением на PHP) мне потребовалось добавить в уже существующею буферизацию, ещё одну. В интернете искал, как правильно сделать вложенную буферизацию и решение было найдено. Моя буферизация в буферизации выглядит так:
...
// Получение шаблона приложения
ob_start();
include (phpfox::getParam('core.dir_app') . $id . PHPFOX_DS . 'page' . PHPFOX_DS . $page . '.php');
$html = ob_get_clean();
// End: Получение шаблона приложенияОбработать файл перед его получением на PHP
При написании одного модуля для движка, потребовалось получать шаблоны для вставки кода в уже загруженную страницу. Делал это так:
По ходу развития модуля, пришлось добавлять PHP код, он должен был выполняться перед получением самого шаблона. Но он не обрабатывался функцией
Чтобы PHP код выполнялся перед вставкой шаблона в страницу, было принято решение заменить
Так работает, как хотелось. Код выполняется перед вставкой в страницу.
Так как мой движок изначально использует...
// Получение шаблона приложения
$html = file_get_contents(phpfox::getParam('core.dir_app') . $id . PHPFOX_DS . 'page' . PHPFOX_DS . $page . '.php', true);По ходу развития модуля, пришлось добавлять PHP код, он должен был выполняться перед получением самого шаблона. Но он не обрабатывался функцией
file_get_contents. Код проходил, либо как текст, либо, как закомментированный код...Чтобы PHP код выполнялся перед вставкой шаблона в страницу, было принято решение заменить
file_get_contents, на:
// Получение шаблона приложения
ob_start();
include (phpfox::getParam('core.dir_app') . $id . PHPFOX_DS . 'page' . PHPFOX_DS . $page . '.php');
$html = ob_get_contents();
ob_end_clean();
// End: Получение шаблона приложенияТак работает, как хотелось. Код выполняется перед вставкой в страницу.
Так как мой движок изначально использует...
Как получить высоту и ширину изображения на PHP
Для получения высоты и ширины картинки служит функция:
Делаем так:
Теперь у нас две переменные, где
getimagesize. Функция вернет массив данных, где два элемента будут содержать в себе ширину и высоту.Делаем так:
list ($w, $h) = getimagesize($img);Теперь у нас две переменные, где
$w - ширина изображения, $h - высота.$img - полный путь и имя картинки....Как получить первые | последние несколько элементов массива на PHP
Для реализации одной задумки потребовалось получить первые несколько элементов массива, в дальнейшем следующие несколько элементов, затем следующие, и так до самого конца массива. В этом мне помогла функция array_slice, предназначение которой выбирать срез массива.
Пример получения первых трех элементов массива:
Теперь переменная
Чтобы получить следующие три элемента, меняем ноль на три:
И получаем:
Получаем последние три элемента:
Итог:
Как Вы могли заметить, функция array_slice обнуляет ключи элементов. Если Вам необходимо сохранить порядковые номера ключей, укажите четвертым параметром
...
Пример получения первых трех элементов массива:
$array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$array = array_slice($array, 0, 3);Теперь переменная
$array содержит в себе массив:
Array
(
[0] => 1
[1] => 2
[2] => 3
)Чтобы получить следующие три элемента, меняем ноль на три:
$array = array_slice($array, 3, 3);И получаем:
Array
(
[0] => 4
[1] => 5
[2] => 6
)Получаем последние три элемента:
$array = array_slice($array, 7, 3);Итог:
Array
(
[0] => 8
[1] => 9
[2] => 10
)Как Вы могли заметить, функция array_slice обнуляет ключи элементов. Если Вам необходимо сохранить порядковые номера ключей, укажите четвертым параметром
true:
...
