Задать вопрос
TTATPuOT
@TTATPuOT
https://code.patriotovsky.ru/

Как искать внутри плохоструктурированного массива PHP?

Здравствуйте!
Столкнулся с проблемой, что нужно вот в таком массиве:
Array
(
    [playerstats] => Array
        (
            [stats] => Array
                (
                    [0] => Array
                        (
                            [name] => total_kills
                            [value] => 51652
                        )

                    [1] => Array
                        (
                            [name] => total_deaths
                            [value] => 42005
                        )

                    [2] => Array
                        (
                            [name] => total_time_played
                            [value] => 3786773
                        )

                    [3] => Array
                        (
                            [name] => total_planted_bombs
                            [value] => 1673
                        )

                    [4] => Array
                        (
                            [name] => total_defused_bombs
                            [value] => 405
                        )
И так далее...

Найти, например, name "total_kills" и вывести его "value" (в нашем случае - 51652). Как это возможно сделать?
  • Вопрос задан
  • 158 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
BuriK666
@BuriK666
Компьютерный псих
Только перебор.

Если нужно несколько значений, то проще один раз пробежаться и перестроить в ассоциативный массив.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
artem90
@artem90
TeamLead, Developer
Ответ написан
Комментировать
@sanshung
1С-Битрикс программист
С помощью рекурсивной функции
function search_name($item, $value)
{
    //print_r(array($item, $value));
    if (is_array($item) && !empty($item['name']) && $item['name'] == $value) {
        return $item['value'];
    }
}

function array_search_recursive($arr, $value)
{

    if (search_name($arr, $value) == false) {
        foreach ($arr as $item) {
            //print_r($item);
            array_search_recursive($item, $value);
        }
    } else {
        echo search_name($arr, $value);
    }
}

array_search_recursive($array, 'total_kills');
Ответ написан
Ваш ответ на вопрос

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

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