Первый элемент массива по условию [дубликат]

Я бы использовал вариацию вашего метода:

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.";

Здесь я начинаю строку в строке после знака равенства, чтобы все они выстроились в линию, и я также убеждаюсь, что пространство происходит в конец линии (опять же для целей выравнивания).

2
задан amirali 18 January 2019 в 13:51
поделиться

3 ответа

нет необходимости использовать все вышеупомянутые функции, такие как 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? Ответ ясен - нет .

0
ответ дан u_mulder 18 January 2019 в 13:51
поделиться

Самое короткое, что я смог найти, это использовать current:

current(array_filter($input, function($e) {...}));

current , по сути, получает первый элемент или возвращает false, если он пуст.

Если код повторяется часто, то, вероятно, лучше всего извлечь его для его собственной функции.

0
ответ дан wilsonzlin 18 January 2019 в 13:51
поделиться

Ваш массив:

$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] даст вам первую запись, которая соответствует вашему минимальному условию.

0
ответ дан Stender 18 January 2019 в 13:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: