tetapi ini tidak akan berfungsi dengan array asosiatif. kuncinya hilang.
ESCOBAR
4
@ESCOBAR: array asosiatif tidak harus memiliki urutan, mereka hanya memetakan kunci ke nilai; jadi "nilai 3 hingga 7" sebenarnya tidak masuk akal…
knittl
benar, tetapi dalam hal ini tidak terkait dengan pesanan. ini hanya tentang 5 item pertama. dan Anda tidak dapat menggunakan array_slice di sini.
ESCOBAR
2
@ESCOBAR: tidak ada item pertama jika Anda tidak memiliki pesanan yang ditentukan. "Pertama" hanya berfungsi jika Anda dapat mengetahui item mana yang datang sebelum atau sesudah item lainnya. Tetapi hanya untuk bersenang-senang, Anda dapat menggabungkan kembali kunci dengan nilai-nilai array (meskipun masih belum ada urutan yang ditentukan):array_combine(array_slice(array_keys($array), 0, 5), array_slice($array, 0, 5))
knittl
1
@darkhorizon: " array_slicemengembalikan sepotong array". Tapi saya akan mengedit jawaban saya untuk membuatnya sedikit lebih jelas.
rajutan
9
array_splice - Hapus sebagian dari array dan ganti dengan yang lain:
$input = array(1, 2, 3, 4, 5, 6);
array_splice($input, 5); // $input is now array(1, 2, 3, 4, 5)
Dari manual PHP:
array array_splice ( array &$input , int $offset [, int $length = 0 [, mixed $replacement]])
Jika panjang dihilangkan, menghapus semuanya dari offset hingga akhir larik . Jika panjang ditentukan dan bernilai positif, maka banyak elemen itu akan dihilangkan. Jika panjang ditentukan dan bernilai negatif maka akhir dari bagian yang dihapus adalah banyak elemen dari akhir larik. Tip: untuk menghapus semuanya dari offset hingga akhir array saat penggantian juga ditentukan, gunakan count ($ input) untuk panjangnya.
sintaks untuk mengembalikan 5 elemen pertama adalah array_splice ($ input, 5)
aland
@AndrejsCainikovs Sesuai dengan php.net, "Jika panjang dihilangkan, maka urutan akan memiliki segalanya mulai dari offset hingga akhir array." Teks yang dicetak tebal pada jawaban menyatakan sebaliknya.
Mengapa Anda membungkus yang sudah ada array_slice()yang sudah melakukan pekerjaan ke dalam fungsi yang tidak perlu ini yang menambahkan overhead dan tidak ada nilai?
aexl
0
Anda dapat menggunakan fungsi array_slice, tetapi apakah Anda akan menggunakan nilai lain? atau hanya 5 yang pertama? karena jika Anda hanya akan menggunakan 5 yang pertama Anda dapat menggunakan LIMIT pada SQL.
Jawaban:
array_slice
mengembalikan sepotong array$sliced_array = array_slice($array, 0, 5)
adalah kode yang Anda inginkan dalam kasus Anda untuk mengembalikan lima elemen pertama
sumber
array_combine(array_slice(array_keys($array), 0, 5), array_slice($array, 0, 5))
array_slice
mengembalikan sepotong array". Tapi saya akan mengedit jawaban saya untuk membuatnya sedikit lebih jelas.array_splice - Hapus sebagian dari array dan ganti dengan yang lain:
$input = array(1, 2, 3, 4, 5, 6); array_splice($input, 5); // $input is now array(1, 2, 3, 4, 5)
Dari manual PHP:
array array_splice ( array &$input , int $offset [, int $length = 0 [, mixed $replacement]])
Jika panjang dihilangkan, menghapus semuanya dari offset hingga akhir larik . Jika panjang ditentukan dan bernilai positif, maka banyak elemen itu akan dihilangkan. Jika panjang ditentukan dan bernilai negatif maka akhir dari bagian yang dihapus adalah banyak elemen dari akhir larik. Tip: untuk menghapus semuanya dari offset hingga akhir array saat penggantian juga ditentukan, gunakan count ($ input) untuk panjangnya.
sumber
Jika Anda hanya ingin mengeluarkan 5 elemen pertama, Anda harus menulis sesuatu seperti:
<?php if (!empty ( $an_array ) ) { $min = min ( count ( $an_array ), 5 ); $i = 0; foreach ($value in $an_array) { echo $value; $i++; if ($i == $min) break; } } ?>
Jika Anda ingin menulis fungsi yang mengembalikan bagian dari array, Anda harus menggunakan array_slice:
<?php function GetElements( $an_array, $elements ) { return array_slice( $an_array, 0, $elements ); } ?>
sumber
array_slice()
yang sudah melakukan pekerjaan ke dalam fungsi yang tidak perlu ini yang menambahkan overhead dan tidak ada nilai?Anda dapat menggunakan fungsi array_slice, tetapi apakah Anda akan menggunakan nilai lain? atau hanya 5 yang pertama? karena jika Anda hanya akan menggunakan 5 yang pertama Anda dapat menggunakan LIMIT pada SQL.
sumber
Cara yang lebih berorientasi objek adalah memberikan rentang ke metode # []. Contohnya:
Katakanlah Anda menginginkan 3 item pertama dari sebuah array.
angka = [1,2,3,4,5,6]
angka [0..2] # => [1,2,3]
Katakanlah Anda menginginkan x item pertama dari sebuah array.
angka [0..x-1]
Hal yang hebat tentang metode ini adalah jika Anda meminta lebih banyak item daripada yang dimiliki array, itu hanya mengembalikan seluruh array.
angka [0..100] # => [1,2,3,4,5,6]
sumber