Функция массива, возвращающая многомерный массив с более чем X элементами? - PullRequest
1 голос
/ 08 июля 2020

Я хотел бы знать, есть ли какая-либо собственная функция или способ узнать те ключи, которые имеют более X элементов и хранят ключи, я не знаю, объясняю ли я себя, поэтому я собираюсь сделать пример с элементами, которые равны или больше 2 элементов

$array = Array ( 
                [A] => 1 
                [B] => 2 
                [C] => 3 
                [D] => Array 
                     ( 
                       [0] => 2 
                       [1] => 6 
                     ) 
                [F] => Array 
                     ( 
                       [0] => 9 
                       [1] => 3 
                     ) 
                [E] => 1)
               ) 

Что я хочу

$array = Array ( [D] => Array 
                     ( 
                       [0] => 2 
                       [1] => 6 
                     ) 
                [F] => Array 
                     ( 
                       [0] => 9 
                       [1] => 3 
                     ) 
                )

Ответы [ 2 ]

1 голос
/ 09 июля 2020

Для данного формата массива вы можете использовать array_walk () и получить желаемый результат для дианами c $ XElement

$final_arr = array();
$xElement = 1; // return all array which has more than 1 element
array_walk($array,function($value,$key, $xElement)  use(&$final_arr){
    if( is_array($value) && count($value) > $xElement ){
        $final_arr = array_merge($final_arr,array($key => $value));
    }
}, $xElement);
echo "<pre>";
print_r($final_arr);

проверить вывод здесь https://paiza.io/projects/0MaY5CSktb9Cmr8xJAskOQ?language=php

1 голос
/ 08 июля 2020

Этот код проверяет, является ли текущий элемент массивом, содержащим> = 2 элемента:

$array = [
   "A" => 1,
   "B" => 2,
   "C" => 3,
   "D" => [2,6],
   "F" => [9,3],
   "E" => 1
];

 
$result = [];
foreach ($array as $k => $v) {
    if (is_array($v) && count($v) >= 2) {
        $result[$k] = $v;
    }
}

Вывод $result:

(
    [D] => Array
        (
            [0] => 2
            [1] => 6
        )

    [F] => Array
        (
            [0] => 9
            [1] => 3
        )

)
...