Найдите, что весь второй уровень вводит многомерный массив в php

Вам нужно использовать поле / 2 для динамического создания полей в запросах:

query
|> select([x], count(field(x, ^field_name), :distinct))

Пример использования другого синтаксиса запроса для завершения:

from x in query,
  select: count(field(x, ^field_name), :distinct)

21
задан user103219 21 September 2009 в 17:32
поделиться

6 ответов

<?php

// Gets a list of all the 2nd-level keys in the array
function getL2Keys($array)
{
    $result = array();
    foreach($array as $sub) {
        $result = array_merge($result, $sub);
    }        
    return array_keys($result);
}

?>

edit: удалена лишняя функция array_reverse ()

20
ответ дан 29 November 2019 в 20:17
поделиться

Мое предложение, подобное этот ответ , но быстрее и использование оператор распространения (PHP 5.6 +).

array_merge(...array_values($fields))

, если Вы хотите, чтобы имена перемещения выстроили значения и сбросили ключи к 0.. n просто используют array_keys на последнем шаге.

array_keys(array_merge(...array_values($fields)))

0
ответ дан 29 November 2019 в 20:17
поделиться
array_keys(call_user_func_array('array_merge', $a));

Объединить все значения и получить полученные ключи.

9
ответ дан 29 November 2019 в 20:17
поделиться
foreach($bigArray as $array){    
    foreach($array as $key=>$value){
        echo $key;
    }
}

Это должно делать то, что вы хотите.

6
ответ дан 29 November 2019 в 20:17
поделиться

А что насчет такого:

$your_keys = array_keys($your_array[0]);

Конечно, это с учетом того, что все подмассивы имеют одинаковые ключи; в этом случае вам нужны только ключи первого подмассива (я полагаю, нет необходимости перебирать все подмассивы первого уровня)


И, в качестве сокращенного / упрощенного примера:

$your_array = array(
    array(
        'action' => 'A',
        'id' => 1,
        'base' => array('id' => 145),
    ),
    array(
        'action' => 'B',
        'id' => 2,
        'base' => array('id' => 145),
    ),
    array(
        'action' => 'C',
        'id' => 3,
        'base' => array('id' => 145),
    )
);

$your_keys = array_keys($your_array[0]);
var_dump($your_keys);

Вы получите:

array
  0 => string 'action' (length=6)
  1 => string 'id' (length=2)
  2 => string 'base' (length=4)

Вы можете использовать implode , чтобы получить запрошенную строку:

echo implode(', ', $your_keys);

вы получите:

action, id, base

то есть список ключей первого подмассива.

5
ответ дан 29 November 2019 в 20:17
поделиться
function  __getAll2Keys($array_val){
        $result = array();
        $firstKeys = array_keys($array_val);
        for($i=0;$i<count($firstKeys);$i++){
            $key = $firstKeys[$i];
            $result = array_merge($result,array_keys($array_val[$key]));
        }
        return $result;
    }

попробуйте эту функцию. Он вернется, как вы хотите.

1
ответ дан 29 November 2019 в 20:17
поделиться
Другие вопросы по тегам:

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