@feniksdv

Как сравнить массив и строку?

Есть массив
name1:яблоко
name2:груша
...
name100:ягуар


есть строка [name1][name2]...[name100] может быть одно значение, а может и не сколько.
Вопрос Если в строке имеется [nameX] то вывести значения ключей в массиве.

т.е. Нашли в строке [name1] и [name100], то выводим яблоко и ягуар, не могу понять как это сделать
  • Вопрос задан
  • 100 просмотров
Решения вопроса 1
@eustatos
<?php
$arr = [
    'name1' => 'apple',
    'name100' => 'jaguar'
];

$str = '[name1]';

echo finder($arr, $str);

echo PHP_EOL;

echo finder(
    $arr,
    '[name2][name1][name100]'
);

function finder($arr, $str) {
    $output = '';
    foreach($arr as $key=>$value) {
        $pattern = "/\[{$key}\]/";
        preg_match($pattern, $str, $matches);
        if (count($matches) > 0 ) {
            $output .= $arr[$key] . PHP_EOL;
        }
    }
    return $output;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Находите в строке регулярным выражением все nameX.
Перебираете все значения данного списка на наличие ключей в массиве значений.
При наличие ключа выводите значение из массива по ключу.
Ответ написан
Комментировать
inkShio
@inkShio
А строку в массив, не вариант? И сравнить 2 массива?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы