2014-01-23 2 views
1

Рассмотрим массив, как это,значения PHP GET массива, имеющие определенное слово

$sports = array('Football','cricket ball','tennis ball','shuttle bat','hockey stick'); 

Я хочу создать массив из $ спорта, как это,

$ball = array('Football','cricket ball','tennis ball'); 

на основе ключа поиска (здесь «мяч»).

Если am петли через массив $ спортивные и проверки один за другим, получите результат. Но тогда я уже внутри цикла, и это может быть даже петли более 50 000 раз. Поэтому подумал об избежании очередного цикла.

Есть ли другой способ сделать это?

Благодаря

+1

[ 'array_filter()'] (http://php.net/array -filter) + ['preg_match()'] (http://php.net/preg-match) – BlitZ

+0

здесь Я не знаю, какой ключевой пользователь будет искать , Итак, как я могу определить функцию обратного вызова? –

ответ

3

Попробуйте array_filter() + preg_match() функции:

<?php 
header('Content-Type: text/plain; charset=utf-8'); 

$array = array('Football','cricket ball','tennis ball','shuttle bat','hockey stick'); 

$word = 'ball'; 

$results = array_filter(
    $array, 
    function($value) use ($word){ 
     return preg_match('/' . $word . '/i', $value); 
    } 
); 

print_r($results); 
?> 

передачи:

Array 
(
    [0] => Football 
    [1] => cricket ball 
    [2] => tennis ball 
) 
+0

потрясающий, он работает ....... Спасибо :) –

2
$sports = array('Football','cricket ball','tennis ball','shuttle bat','hockey stick'); 
$input = 'ball'; 
$result = array_filter($sports, function ($item) use ($input) { 
    if (stripos($item, $input) !== false) { 
     return $item; 
    } 
}); 
print_r($result); 
Смежные вопросы