2015-12-20 2 views
0

Я не получаю анонс. функции. И мне постоянно приходится писать небольшие циклы, чтобы найти определенные значения в массивах. Я хочу знать, могу ли я написать что-то вроде следующего:Anon Функции Return True

$isItTrue = function() { 
    foreach($array as $key => $val) { 
    if($key == "foobar") retu 
    } 
}; 

К сожалению у меня нет лучшего примера, но это общая суть. Есть лучший способ сделать это? Кажется бесполезным написать названную функцию, чтобы узнать что-то такое тривиальное.

+0

Ну, хотя бы синтаксис функции должен быть действительным ... – arkascha

+0

Что вы хотите получить? Ваш пример не завершен. Если вы просто хотите проверить некоторые значения в массиве, то и циклы, и анонимные функции являются избыточными. –

+0

Я знаю, что код выше не работает, я пытался проиллюстрировать то, что я хотел бы сделать – Chud37

ответ

1

Ваш пример не работа, но близко. Посмотрите на этот вариант:

<?php 

$isItTrue = function($key, $array) { 
    return array_key_exists($key, $array); 
}; 

$input = [ 
'a' => 0, 
'foobar' => 1, 
'b' => 2 
]; 

var_dump($isItTrue('foobar', $input)); 
var_dump($isItTrue('nono', $input)); 

Выход:

bool(true) 
bool(false) 

Очевидно, что вы можете непосредственно использовать функцию array_key_exists() для этого, но это не главное. Это просто используется в качестве примера здесь ...

Вы не будете реализовывать небольшие вспомогательные функции, если в php нет готовых к использованию функций утилиты. Хотя php предлагает реальное богатство такой функции, очевидно, что он должен быть ограниченным. Анонимные функции не решат эту потребность, это не то, для чего они предназначены. Их власть лежит в другом месте: вы можете определить несколько и передать их как «черные ящики» туда, где вы хотите, чтобы они использовались. Это означает, что среда выполнения не должна знать, какая функция выполнена. Ему не нужно ссылаться непосредственно на него. Ему не нужно знать имя функции.

Типичным примером может быть каталог чего-то, может быть, «функции», который также предлагает «функцию проверки». Во время выполнения код с использованием функции не интересует, какую функцию проверки использовать. Он использует каталог, там определенная функция определена, которая используется для проверки. Другая форма инкапсуляции кода у ООП, если вы так выразились.

+0

@IhorBurlachenko Это не вопрос здесь ... – arkascha

+0

Спасибо! Я понял это сейчас. Я искал быстрое решение, не создавая совершенно новую функцию (и имя). Спасибо за ваш очень полезный ответ, хотя! – Chud37