сортировка масива по слову

вопросы и ответы по использованию PHP
Ответить
Аватара пользователя
ттбрть
Сообщения: 27
Зарегистрирован: 19 дек 2019, 08:08
Откуда: хохляндия

сортировка масива по слову

Сообщение ттбрть » 29 апр 2020, 15:05

как выбрать с масива все строчи в которых есть слово "open"?
тобишь как из этого
$x = array("eeeeee open", "eeeeeeeeee", "open eeeeeeee", "eeeeeeeeeeee", "eeeeee open eeeee");
получить такой результать

[0] => eeeeee open
[1] => open eeeeeeee
[2] => eeeeee open eeeee

Аватара пользователя
XwebDeveloper
Сообщения: 37
Зарегистрирован: 13 ноя 2017, 12:53

Re: сортировка масива по слову

Сообщение XwebDeveloper » 29 апр 2020, 16:06

Можно вот так:
// исходный массив
$x = array("eeeeee open", "eeeeeeeeee", "open eeeeeeee", "eeeeeeeeeeee", "eeeeee open eeeee");
// ключи для поиска
$arr_search=array();
$arr_search[]="open";
// получить массив с результатами
$res = getElementsWith($x, $arr_search);
// вывести результат в панель отладки
print_r($res);

/*
[0] => eeeeee open
[1] => open eeeeeeee
[2] => eeeeee open eeeee
*/

/**
 * Получит все элементы массива, которые содержат  строку или несколько строк (подстроки)
 * 
 * @param string $arr     -- список строк, в которых искать
 * @param array $startStr -- список подстрок (которые искать)
 * @return array
 */
function getElementsWith($arr, $startStrs, $trim = false)
{
    $result = [];
     
    foreach ($arr as $val)
    {
        foreach ($startStrs as $Str) {
            // echo ;
            if (strpos($val,$Str)!==false) {
                 
                if ($trim) {
                    $str = trim($val);
                } else {
                    $str = $val;
                }
                 
                $result[] = $str;
            }
        }
    }
         
    return $result;
}

sashawww
Сообщения: 24
Зарегистрирован: 15 дек 2009, 03:26

Re: сортировка масива по слову

Сообщение sashawww » 30 апр 2020, 12:13

А лучше так) :wink:

Код: Выделить всё

$x = array("eeeeee open", "eeeeeeeeee", "open eeeeeeee", "eeeeeeeeeeee", "eeeeee open eeeee");

$res = array_filter($x, function($el){
    return strpos($el, "open") !== false;
});

print_r($res);

Ответить