PHP: Как узнать, есть ли в массиве строка, содержащая строку? - PullRequest
0 голосов
/ 19 марта 2012

Мне нужно создать цикл, который проверяет, содержит ли массив ($ array) строку ('thisisaverylongstring'), которая содержит другую строку ('isavery').

Как бы я написал это в действительном PHP?

Ответы [ 4 ]

1 голос
/ 19 марта 2012
$arrayData = array('This is a very long string',
                   'This is a short string',
                  );
$needle = 'very';

$matches = array_filter( $arrayData,
                         function($data) use ($needle) { 
                             return (stripos($data,$needle) !== FALSE); 
                         }
                       );
if (count($matches) > 0) {
    echo 'Match found';
}
var_dump($matches);
1 голос
/ 19 марта 2012

Я не знаю, каковы ваши реальные требования, но, насколько я понимаю, может работать следующая функция

  function checkInArray($array, $val)
{
    if(in_array($val,$array))
    return true;    
}
function checkvalinarray($array2D, $val1, $val2)
{
foreach($array2D as $array1D)
{
    if(checkInArray($array1D,$val2))
    return true;    
}
}
1 голос
/ 19 марта 2012

Если это просто, как вы говорите, вы можете использовать stripos (поиск строки без учета регистра):

foreach ($array as $element) {
    if (stripos($element, 'isavery') !== false) {
        echo 'Found it!';
        break;
    }
}
0 голосов
/ 19 марта 2012
$stringToLookFor = 'isavery';
$inArray = FALSE; //does the string exist in the array?
foreach($array as $string)
{
    if(strpos($string, $strongToLookFor) !== FALSE)
    {
         $inArray = TRUE;
    }
}

if($inArray)
{
    echo 'String "' . $stringToLookFor . '" found in array';
}
...