- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Как можно преобразовать строку $str = '$opt[$path[0]][$path[1]]';
в массив? То есть чтобы переменная $str содержала значение массива $opt[$path[0]][$path[1]].
serialize или implode, подробнее на php.net
P.S.
Превед Черкаго ;).
serialize или implode, подробнее на php.net
P.S.
Превед Черкаго ;).
Спасибо. Но это не совсем то что мне нужно.
Вы тоже из Черкасс?
http://php.net/eval
$php = '$opt[$path[0]][$path[1]]';
$str = '$str = '.$php.';';
eval($str);
Как можно преобразовать строку $str = '$opt[$path[0]][$path[1]]';
в массив? То есть чтобы переменная $str содержала значение массива $opt[$path[0]][$path[1]].
Откуда в $opt[$path[0]][$path[1]] берутся значения? Иначе по eval вы просто проинициируете $str пустым массивом.
Вот так будет работать:
eval($tmp);
echo $str;
echo '<br>';
echo $opt[$path[0]][$path[1]];
* наружные кавычки ' - одинарные неспроста!
Но $str - лишняя, не знаю зачем она вам нужна. После eval можно работать сразу с $opt[$path[0]][$path[1]]
И вообще - у вас что-то не так с идеологией проекта. Для нормальной работы с внешними данными обычно хватает serialize()/unserialize() или json_decode()/json_encode().
Смотрите, чтобы в eval пользовательский ввод не попадал - а то сайт быстро хакнут.
Откуда в $opt[$path[0]][$path[1]] берутся значения?
Есть 2 массива:
1-вый входной одномерный массив $path количество его элементов заранее не известно (может быть от $path[0] до $path[5] и более).
2-й многомерный асоц. массив $opt - структура его известная.
Нужна логика сравнения двух массивов $opt и $path, то есть например существует ли такой элемент массива как $opt[$path[0]][$path[1]] или $opt[$path[0]][$path[1]$path[2]][$path[3]] или $opt[$path[0]].
Поскольку я не знаю количество элементов на входе массива $path, я придумал код:
$n = count($path);
for($x=0; $x < $n; $x++)
{
$lis .= '[$path'.'['.$x.']'.']';
}
$lis = '$lis = $opt'.$lis.';';
eval($lis);
if($lis)
$conc = $lis;
else
$conc = 'Page404View';
return $conc;
Возможно есть более правильные решения?
правильным решением будет писать сначала задачу, и неплохо бы свои замутки в одной теме развивать чтобы не терять нити ваших заблуждений...
Нужна логика сравнения двух массивов $opt и $path, то есть например существует ли такой элемент массива как $opt[$path[0]][$path[1]] или $opt[$path[0]][$path[1]$path[2]][$path[3]] или $opt[$path[0]].
не нужна вам такая логика, откуда она вобще взялась?
а нельзя сразу?
$fail = false;
$ret = $opt;
foreach($path as $v)
{
if(isset($ret[$v]))
{
$ret = $ret[$v];
} else {
$fail = true;
break;
}
}
Но логики тут конечно нет
Возможно есть более правильные решения?
Можно просто проверять существование элемента массива функцией isset():
Так не устроит?Хм... а я что выше написал?