Mari kita asumsikan saya memiliki array multidimensi berikut (diambil dari MySQL atau layanan):
array(
array(
[id] => xxx,
[name] => blah
),
array(
[id] => yyy,
[name] => blahblah
),
array(
[id] => zzz,
[name] => blahblahblah
),
)
Bisakah kita mendapatkan array id
s dalam satu panggilan fungsi php " built-in "? atau satu baris kode?
Saya mengetahui perulangan tradisional dan mendapatkan nilainya tetapi saya tidak membutuhkan ini:
foreach($users as $user) {
$ids[] = $user['id'];
}
print_r($ids);
Mungkin beberapa array_map()
dan call_user_func_array()
bisa melakukan keajaiban.
foreach($users as $user) {$ids[] = $user['id'];}
dalam satu baris! tetapi Anda tahu apa yang saya maksud / perlu :-)Jawaban:
Sejak php 5.5, Anda dapat menggunakan
array_column
:Ini adalah opsi yang disukai pada proyek modern apa pun. Namun, jika Anda harus mendukung php> 5.5, ada alternatif berikut:
Sejak php 5.3, Anda dapat menggunakan
array_map
dengan fungsi anonim, seperti ini:Sebelum (Secara teknis php 4.0.6+) , Anda harus membuat fungsi anonim dengan
create_function
:sumber
function ($ar) {return $ar['id'];}
nilai kembalian kunci yang akan luar biasa! :-)['ball' => ['golf' => 7, 'basket' => 5, 'soccer' => 6], 'shuttle' => ['badminton' => 1]]
.array_map
dengan fungsi panah:$ids = array_map(fn ($ar) => $ar['id'], $users);
PHP 5.5+
Memulai PHP5.5 + Anda memiliki array_column () tersedia untuk Anda, yang membuat semua di bawah ini menjadi usang.
PHP 5.3+
$ids = array_map(function ($ar) {return $ar['id'];}, $users);
Solusi oleh @phihag akan bekerja dengan sempurna di PHP mulai dari PHP 5.3.0, jika Anda membutuhkan dukungan sebelum itu, Anda perlu menyalin wp_list_pluck itu.
PHP <5.3
Wordpress 3.1+Di Wordpress ada fungsi yang disebut wp_list_pluck Jika Anda menggunakan Wordpress yang memecahkan masalah Anda.
PHP <5.3Jika Anda tidak menggunakan Wordpress , karena kodenya adalah open source, Anda dapat menyalin dan menempelkan kode di proyek Anda (dan mengganti nama fungsinya menjadi sesuatu yang Anda sukai, seperti array_pick).Lihat sumber di sini
sumber
Jika
id
kunci pertama dalam larik, ini akan dilakukan:Anda tidak harus bergantung pada ini. :)
sumber
Anda juga bisa menggunakan
array_reduce()
jika Anda lebih suka pendekatan yang lebih fungsionalMisalnya:
Atau jika Anda ingin menjadi mewah,
Ini dan semua metode di atas melakukan perulangan di belakang layar;)
sumber