1234Amit Ответов: 1

Как искать массив по алфавиту.


$Object = 'Cucumber';


в огуречном месте, если я поставлю "С", он должен перечислить все элементы из списка салатов, которые начинаются с "с". Есть ли у них какой - нибудь способ сделать это?

Что я уже пробовал:

<pre>$veggies = array("Potato", "Cucumber", "Carrot", "Orange", "Green Beans", "Onion");
            $fruits  = array("Apple", "Banana", "Orange", "Pineapple", "Grapes", "Watermelon");
            $salad   = array_merge ($veggies, $fruits);
            $Object = 'Cucumber';
            $search = array_keys($salad, $Object);
            print_r($salad) ; 
            print_r($search);
            foreach($search as $value)
                {
                echo $Object;
            } 

1 Ответов

Рейтинг:
11

Christiaan van Bergen

Чтобы сопоставить только начало строки в массиве $salad, примените метод array_filter.

$search = array_filter($salad, function($el) use ($Object) {
            return ( strpos($el[0], $Object) !== FALSE );
          });
Здесь мы перебираем все элементы в @salad и помещаем их в тест, независимо от того, равна ли первая часть строке $Object.

Таким образом, ваш код будет
$veggies = array("Potato", "Cucumber", "Carrot", "Orange", "Green Beans", "Onion");
$fruits  = array("Apple", "Banana", "Orange", "Pineapple", "Grapes", "Watermelon");
$salad   = array_merge ($veggies, $fruits);
$Object = 'C';

$search = array_filter($salad, function($el) use ($Object) {
        return ( strpos($el[0], $Object) !== FALSE );
    });

print_r($search);
В результате чего
Array
(
    [1] => Cucumber
    [2] => Carrot
)