ragnar_ok
@ragnar_ok

Как расположить в обратном порядке некоторые элементы массива?

Как расположить в обратном порядке те элементы массива $array, у которых 'property' равен 2?

$array = [
    [
        'id' => 1,
        'property' => 2,
    ],
    [
        'id' => 2,
        'property' => 2,
    ],
    [
        'id' => 3,
        'property' => 1,
    ],
    [
        'id' => 4,
        'property' => 1,
    ],
];


Ожидаемый результат:
$array = [
    [
        'id' => 2,
        'property' => 2,
    ],
    [
        'id' => 1,
        'property' => 2,
    ],
    [
        'id' => 3,
        'property' => 1,
    ],
    [
        'id' => 4,
        'property' => 1,
    ],
];
  • Вопрос задан
  • 107 просмотров
Решения вопроса 1
0xD34F
@0xD34F
$key = 'property';
$val = 2;

$toReverse = array_filter($array, function($n) use($key, $val) {
  return $n[$key] === $val;
});

$newArray = array_map(function($n) use(&$toReverse, $key, $val) {
  return $n[$key] === $val ? array_pop($toReverse) : $n;
}, $array);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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