array mati, vektor hack!

Menarik dari standup hari ini; seorang engineer ingin menyaring array dan menghapus semua nilai null.

Mengingat array seperti ini:

$alpha = [null, 'b', 'c'];

Dia mencoba untuk menyaring nilai-nilai dengan kode ini:

array_filter($alpha, function($val) {
    return !is_null($val);
});

Masalahnya adalah dia berharap $alpha[0] menjadi 'b'… sayangnya array terlihat seperti ini:

[ 1 => 'b', 2 => 'c' ]

Ini adalah pengingat bahwa array_filter mempertahankan keys. Jika anda ingin mengabaikan kunci, anda harus memanggil array_values pada hasil.

Kemudian array akan bagus dan padat.:

array_filter($alpha, function($val) {
    return !is_null($val);
});
$alpha = array_values($alpha);
// [ 0 => 'b', 1 => 'c' ]

Tapi,

Mengapa ada orang yang menggunakan array? Mereka sudah tua dan usang, mari kita gunakan Vektor dari HHVM! Vektor Hack ini bekerja seperti yang Anda harapkan, untuk mendapatkan array dengan keys baru.

$alpha_vector = new HH\Vector($alpha)
$alpha_vector->filter(function($e) {
    return !is_null($e);
});
// [ 0 => 'b', 1 => 'c' ]

Jauh lebih cantik! Terimakasih Zuck untuk HHVM!

array mati, vektor hack!

Satu pemikiran pada “array mati, vektor hack!

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s