Я пытаюсь автоматизировать просеивание через свои банковские выписки. Вот тривиальный пример того, что мне нужно.Сравните значение массива PHP с PART строки
У меня есть множество ресторанов, против которых я сортирую мои заявления кредитной карты:
$restaurants = array(
array("vendor" => "default",
"type" => "default"
),
array("vendor" => "dunkin",
"type" => "pastry"
),
array("vendor" => "mcdonald",
"type" => "fastfood"
),
array("vendor" => "olive",
"type" => "italian"
)
);
Оператор Запись сам может быть довольно описательная строка:
$string = "McDonald's Restaurants Incorporated";
Я попытался с помощью array_search и in_array, но они, похоже, обращают внимание на то, что мне нужно, или им нужно точное соответствие , как в примере ниже, но это не то, что мне нужно:
$result = array_search($string, array_column($restaurants, 'vendor'));
return $restaurants[$result]['type'];
// returns "default" because "McDonald's Restaurants Incorporated" != "mcdonald"
Я хотел бы быть в состоянии соответствовать значению массива «Макдоналдс» на любую строку, которая содержит этот кусок, а потом вернуться типом «фастфуд» для него. Не беспокойтесь о том, чтобы обрабатывать несколько случаев.
Работает правильно! Спасибо за пример кода, который очень ценится. – LexxTal
Это можно сделать более эффективно. Почему вы используете временную переменную $ out?Почему бы не вернуть $ restaurant ['type'], как только он будет найден, и иметь оператор возврата по умолчанию за пределами цикла? Это сократит вашу функцию до 9 строк, не считая комментарии. – blasko
Привет @blasko, временная переменная предназначена для обработки ситуации, когда значение по умолчанию может быть не в начале массива, а, возможно, в середине или в конце. Если ни совпадение не установлено по умолчанию, верните значение false –