Dodajemy ostatnie szlify do naszego helpera Arr. Dwie metody, które okazały się pomocne podczas pisania naszego projektu MVC.

Pierwsza to exceptKeys, pozwalająca wyłączyć pewne klucze z tablicy:

<?php
class Arr{
    
    //(...)

    public static function exceptKeys($assoc, $excluded_fields) {
        return array_diff_key($assoc, array_flip($excluded_fields));
    }
   
}

Tak wygląda w działaniu:

$data = [
    'user' => 'John',
    'password' => md5('helloworld'),
    'confirmPassword' => md5('helloworld'),
    'email' => 'john.doe@wp.pl'
];

$excluded_fields = ['password', 'confirmPassword'];

print_r(Arr::exceptKeys($data, $excluded_fields));
//Array ( [user] => John [email] => john.doe@wp.pl )

Druga zaś z tablicy mieszanej usuwa klucze numeryczne, indeksowe:

<?php
class Arr{
    
    //(...)

    public static function withoutNumericKeys($arr){
        return array_filter($arr, function($k){
            return !is_numeric($k);
        }, ARRAY_FILTER_USE_KEY);
    }
   
}

W działaniu wygląda tak:

$jim = ["ID" => 14 , 0 => 14, "name" => "Jim", 1 => "Jim" , "age" => 29, 2 => 29 ];
print_r($jim);
//Array ( [ID] => 14 [0] => 14 [name] => Jim [1] => Jim [age] => 29 [2] => 29 )

print_r(Arr::withoutNumericKeys($jim));
// Array ( [ID] => 14 [name] => Jim [age] => 29 )