Objects के array से specific property निकालकर simple array बनाने के कई तरीके हैं।
उदाहरण Data
$users = [
(object)['id' => 12, 'name' => 'अमित', 'email' => 'amit@example.com'],
(object)['id' => 33, 'name' => 'प्रिया', 'email' => 'priya@example.com'],
(object)['id' => 59, 'name' => 'राहुल', 'email' => 'rahul@example.com'],
];
विधि 1: array_column() (PHP 5.5+ अनुशंसित)
// सबसे सरल और तेज़ तरीका $ids = array_column($users, 'id'); $names = array_column($users, 'name'); $emails = array_column($users, 'email'); print_r($ids); // आउटपुट: Array ( [0] => 12 [1] => 33 [2] => 59 )
विधि 2: array_map() (सभी PHP versions)
// PHP 7.4+ Arrow function
$ids = array_map(fn($user) => $user->id, $users);
// PHP 7.3 और पहले
$ids = array_map(function($user) {
return $user->id;
}, $users);
// Multiple properties के लिए
$userData = array_map(function($user) {
return [
'id' => $user->id,
'name' => $user->name
];
}, $users);
विधि 3: foreach Loop (सबसे स्पष्ट, सबसे नियंत्रण)
$ids = [];
$names = [];
foreach ($users as $user) {
$ids[] = $user->id;
$names[] = $user->name;
// Conditional logic आसान है
if ($user->id > 20) {
$names[] = $user->name . ' (सीनियर)';
}
}
विधि 4: Generator (Memory Efficient for Large Datasets)
function extractProperty(iterable $objects, string $property) {
foreach ($objects as $obj) {
yield $obj->$property;
}
}
// उपयोग - memory efficient
$ids = iterator_to_array(extractProperty($users, 'id'));
// या सीधे iterate करें
foreach (extractProperty($users, 'name') as $name) {
echo $name . "\n";
}
विधि 5: ArrayAccess Objects के लिए (जैसे Doctrine entities)
// यदि objects ArrayAccess implement करते हैं
$ids = array_map(function($user) {
return $user['id']; // या $user->getId()
}, $users);
प्रदर्शन तुलना (100,000 objects)
| विधि | समय | Memory |
|---|---|---|
array_column() | ~8ms | कम |
array_map() (arrow fn) | ~12ms | कम |
foreach | ~10ms | कम |
| Generator + iterator_to_array | ~15ms | बहुत कम (streaming) |
निष्कर्ष
- सरल extraction के लिए:
array_column()- सबसे तेज़, साफ़ सिंटैक्स - Transformation के लिए:
array_map()- लचीलापन - Complex logic के लिए:
foreach- पूर्ण नियंत्रण - Huge datasets के लिए: Generator - constant memory