Array Helper adalah kelas yang menyediakan berbagai fungsi untuk memanipulasi dan mengolah array di PHP dengan cara yang lebih mudah dan ekspresif. Helper ini dapat digunakan untuk berbagai keperluan seperti transformasi data, filtering, sorting, dan operasi array lainnya.
composer require ay4t/php-helpersUntuk menggunakan Array Helper, Anda dapat menggunakan facade HP seperti berikut:
use Ay4t\Helper\HP;
$array = [...]; // array Anda
$result = HP::Array($array)->methodName();Mengubah array multi-dimensi menjadi array satu dimensi.
$array = [1, [2, 3], [4, [5, 6]]];
$result = HP::Array($array)->flatten();
// Result:
[1, 2, 3, 4, 5, 6]Mengelompokkan array berdasarkan key tertentu.
$users = [
['role' => 'admin', 'name' => 'John'],
['role' => 'user', 'name' => 'Jane'],
['role' => 'admin', 'name' => 'Bob']
];
$result = HP::Array($users)->groupBy('role');
// Result:
[
'admin' => [
['role' => 'admin', 'name' => 'John'],
['role' => 'admin', 'name' => 'Bob']
],
'user' => [
['role' => 'user', 'name' => 'Jane']
]
]Mengambil nilai dari key tertentu dalam array.
$users = [
['id' => 1, 'name' => 'John'],
['id' => 2, 'name' => 'Jane']
];
$result = HP::Array($users)->pluck('name');
// Result:
['John', 'Jane']Mencari data dalam array berdasarkan kondisi.
$users = [
['role' => 'admin', 'name' => 'John'],
['role' => 'user', 'name' => 'Jane'],
['role' => 'admin', 'name' => 'Bob']
];
$result = HP::Array($users)->where('role', 'admin');
// Result:
[
['role' => 'admin', 'name' => 'John'],
['role' => 'admin', 'name' => 'Bob']
]Mengurutkan array berdasarkan key tertentu.
$users = [
['name' => 'John', 'age' => 30],
['name' => 'Jane', 'age' => 25],
['name' => 'Bob', 'age' => 35]
];
// Ascending order (default)
$result = HP::Array($users)->sortBy('age');
// Result:
[
['name' => 'Jane', 'age' => 25],
['name' => 'John', 'age' => 30],
['name' => 'Bob', 'age' => 35]
]
// Descending order
$result = HP::Array($users)->sortBy('age', 'desc');
// Result:
[
['name' => 'Bob', 'age' => 35],
['name' => 'John', 'age' => 30],
['name' => 'Jane', 'age' => 25]
]Menghapus nilai duplikat dalam array.
// Simple array
$numbers = [1, 2, 2, 3, 3, 4];
$result = HP::Array($numbers)->unique();
// Result:
[1, 2, 3, 4]
// Array of objects/arrays with field
$users = [
['id' => 1, 'role' => 'admin'],
['id' => 2, 'role' => 'admin'],
['id' => 3, 'role' => 'user']
];
$result = HP::Array($users)->unique('role');
// Result:
[
['id' => 1, 'role' => 'admin'],
['id' => 3, 'role' => 'user']
]Membagi array menjadi beberapa bagian dengan ukuran yang sama.
$array = [1, 2, 3, 4, 5, 6];
$result = HP::Array($array)->chunk(2);
// Result:
[
[1, 2],
[3, 4],
[5, 6]
]Mencari nilai dalam array (case-insensitive).
// Simple array
$fruits = ['Apple', 'Banana', 'Orange', 'Pineapple'];
$result = HP::Array($fruits)->search('apple');
// Result:
['Apple', 'Pineapple']
// Array of objects/arrays with field
$users = [
['name' => 'John Doe', 'email' => 'john@example.com'],
['name' => 'Jane Doe', 'email' => 'jane@example.com']
];
$result = HP::Array($users)->search('john', 'name');
// Result:
[
['name' => 'John Doe', 'email' => 'john@example.com']
]Mengubah array menjadi string dengan delimiter tertentu.
// Simple array
$fruits = ['apple', 'banana', 'orange'];
$result = HP::Array($fruits)->implode(', ');
// Result:
"apple, banana, orange"
// Array of objects/arrays with field
$users = [
['name' => 'John', 'age' => 30],
['name' => 'Jane', 'age' => 25]
];
$result = HP::Array($users)->implode(', ', 'name');
// Result:
"John, Jane"Anda dapat menggabungkan beberapa method sekaligus untuk melakukan operasi yang lebih kompleks:
$users = [
['role' => 'admin', 'name' => 'John', 'active' => true],
['role' => 'admin', 'name' => 'Jane', 'active' => false],
['role' => 'user', 'name' => 'Bob', 'active' => true],
['role' => 'user', 'name' => 'Alice', 'active' => true]
];
$result = HP::Array($users)
->where('active', true)
->sortBy('name')
->pluck('name')
->implode(', ');
// Result:
"Alice, Bob, John"Array Helper sangat berguna ketika bekerja dengan data dari database:
// Contoh data dari database
$orders = [
['status' => 'pending', 'total' => 100, 'customer' => 'John'],
['status' => 'completed', 'total' => 200, 'customer' => 'Jane'],
['status' => 'pending', 'total' => 150, 'customer' => 'Bob'],
['status' => 'completed', 'total' => 300, 'customer' => 'Alice']
];
// Mendapatkan total pesanan yang pending
$pendingOrders = HP::Array($orders)
->where('status', 'pending')
->sortBy('total', 'desc');
// Mendapatkan daftar customer yang memiliki pesanan completed
$completedCustomers = HP::Array($orders)
->where('status', 'completed')
->pluck('customer')
->implode(', ');- Gunakan method chaining untuk membuat kode lebih ringkas dan mudah dibaca
- Manfaatkan parameter opsional seperti
$fieldpada methodunique()dansearch() - Perhatikan tipe data yang diproses, terutama saat menggunakan method seperti
sortBy() - Gunakan method yang sesuai untuk performa yang lebih baik (misalnya
pluck()vswhere()->implode())
Jika Anda menemukan bug atau ingin menambahkan fitur baru, silakan buat issue atau pull request di repository GitHub kami.