Удалить ключи без указанных имен - PullRequest
0 голосов
/ 09 октября 2018

У меня есть такой массив:

Array
(
    [44] => 2
    [21] => 2
    [] => 2
    [27] => 2
)

Как найти и удалить (сбросить) ключи без указанных имен?Так что в этом случае массив должен выглядеть так:

Array
(
    [44] => 2
    [21] => 2
    [27] => 2
)

Ответы [ 5 ]

0 голосов
/ 09 октября 2018

похоже, у вас есть массив (ключ-значение) в массивах этого типа, у нас есть ключ, и невозможно иметь ячейку без ключа.так как вы упомянули в своем вопросе, ячейка, которая, кажется, не имеет никакого ключа, уже имеет ключ '' (пустая строка).я имею в виду, что его определение было таким:

$array['']=2;

, поэтому вы можете просто сбросить его как обычно.как это

unset( $array['']);

, потому что, если вы определите ячейку как показано ниже:

 $array[]=2;

автоматически, это даст первый доступный числовой ключ.Например, если у вас есть:

 $array[4]=5;
 $array[]=6;

, он автоматически дает следующий свободный индекс, это означает, что php выглядит так:

 $array[4]=5;
 $array[5]=6;

Я надеюсь, что это может помочь вам.

0 голосов
/ 09 октября 2018

Вы можете попробовать это:

$arrayWithoutNullKeyMembers = array_filter($arrayWithNullKeyMembers,
                        function($key){ return !empty($key); }, ARRAY_FILTER_USE_KEY);
0 голосов
/ 09 октября 2018
if (($key = array_search(null', $array)) !== false) {
    unset($array[$key]);
}

Предлагаю прочитать эту тему

0 голосов
/ 09 октября 2018

Я думаю, что лучшим решением будет самое простое:

$array = [
44 => 2,
21 => 2,
'' => 2,
27 => 2
];

$results = [];

foreach ($array as $k => $a) {
    if (!empty($k)) {
        $results[$k] = $a;
    }
}

var_dump($results);

песочница

0 голосов
/ 09 октября 2018

может быть ключом '' (пустая строка)

в этом случае при условии, что у вас есть

   $myArray = [
    [44] => 2,
    []   => 2,
    [21] => 2,
    [27] => 2,
   ]

, затем попробуйте сбросить

 unset($myArray['']);
...