Задать вопрос
@akula22

Как получить три значения из массива?

Есть такой массив
[
    0 => [
        'user_id' => '2'
    ]
    1 => [
        'user_id' => '4'
    ]
    2 => [
        'user_id' => '2'
    ]
    3 => [
        'user_id' => '8'
    ]
    4 => [
        'user_id' => '5'
    ]
    5 => [
        'user_id' => '4'
    ]
    6 => [
        'user_id' => '2'
    ]
    7 => [
        'user_id' => '2'
    ]
    8 => [
        'user_id' => '4'
    ]
    9 => [
        'user_id' => '6'
    ]
    10 => [
        'user_id' => '1'
    ]
    11 => [
        'user_id' => '3'
    ]
    12 => [
        'user_id' => '8'
    ]
    13 => [
        'user_id' => '7'
    ]
    14 => [
        'user_id' => '5'
    ]
    15 => [
        'user_id' => '5'
    ]
    16 => [
        'user_id' => '8'
    ]
    17 => [
        'user_id' => '5'
    ]
]


из этого массива мне надо получить три значения user_id,
1. Первый получаю легко, это первое значение
0 => [
'user_id' => '2'
]

2. Второе береться из второго и третьего значения, но он не может быть user_id из первого значения. В нашем случае нам нужен
1 => [
'user_id' => '4'
]
(так совпало что это и в массиве второе значение, но он мог быть и третьим)

3. и третье береться с другого конца массива, из трех последних значений
15 => [
        'user_id' => '5'
    ]
    16 => [
        'user_id' => '8'
    ]
    17 => [
        'user_id' => '5'
    ]

нам нужно то значение которое повторяется, то есть user_id=5

Есть какое-нибудь здравое решение этого вопроса?
  • Вопрос задан
  • 180 просмотров
Подписаться 1 Оценить 2 комментария
Решения вопроса 1
@akula22 Автор вопроса
Вот написал сам, помоему криворукое решение, но лучше пока не придумал
$array = array_column($playoff, 'user_id');

        foreach ($array as $key => $item) {
            $var[] = $item;
            if ($key >= 2)
                break;
        }
        $gold = array_unique($var);

        $array = array_reverse($array);

        foreach ($array as $key => $item) {
            if (!in_array($item, $tmp)) {
                $tmp[] = $item;
            } else {
                $bronze[] = $item;
            }
            if ($key >= 2)
                break;
        }

        $winners = array_merge($gold, $bronze);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
sabramovskikh
@sabramovskikh
php.net/manual/ru/control-structures.if.php
php.net/manual/ru/ref.array.php
Вот вам молоток и отвертка, крутите и забивайте уже сами
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Приведите массив к "плоскому" ассоциативному виду.
После - просто по циклу foreach.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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