Я бы использовал вариацию вашего метода:
string longString =
"Lorem ipsum dolor sit amet, consectetur adipisicing " +
"elit, sed do eiusmod tempor incididunt ut labore et dolore magna " +
"aliqua. Ut enim ad minim veniam.";
Здесь я начинаю строку в строке после знака равенства, чтобы все они выстроились в линию, и я также убеждаюсь, что пространство происходит в конец линии (опять же для целей выравнивания).
нет необходимости использовать все вышеупомянутые функции, такие как array_filter
. Потому что array_filter
фильтрует массив. И фильтрация отличается от поиска первого значения . Итак, просто сделайте это:
foreach ($array as $key => $value) {
if (meetsCondition($value)) {
$result = $value;
break;
// or: return $value; in in function
}
}
array_filter
отфильтрует весь массив . Поэтому, если требуемое значение является первым, а массив содержит 100 или более элементов, array_filter
все равно будет проверять все эти элементы. Итак, вам действительно нужно 100 итераций вместо 1? Ответ ясен - нет .
Самое короткое, что я смог найти, это использовать current
:
current(array_filter($input, function($e) {...}));
current
, по сути, получает первый элемент или возвращает false
, если он пуст.
Если код повторяется часто, то, вероятно, лучше всего извлечь его для его собственной функции.
Ваш массив:
$array = [
['value' => 100, 'tag' => 'a'],
['value' => 200, 'tag' => 'b'],
['value' => 300, 'tag' => 'a'],
];
Чтобы найти записи с помощью условий, вы можете сделать это
$newArray = array_values(array_filter($array, function($n){ return $n['value'] >= 101 && $n['value'] <= 400; }));
При этом вы можете установить значения, минимальные и максимальные числа.
Если вы хотите установить только минимальное число, вы можете опустить максимальное значение следующим образом
$arrayByOnlyMin = array_values(array_filter($array, function($n){ return $n['value'] >= 199; }));
Это вернет:
array(2) {
[0]=>
array(2) {
["value"]=>
int(200)
["tag"]=>
string(1) "b"
}
[1]=>
array(2) {
["value"]=>
int(300)
["tag"]=>
string(1) "a"
}
}
, так что звонит $arrayByOnlyMin[0]
даст вам первую запись, которая соответствует вашему минимальному условию.