ฉันต้องการส่งคืน 5 รายการแรกจากอาร์เรย์ ฉันจะทำสิ่งนี้ได้อย่างไร
ฉันต้องการส่งคืน 5 รายการแรกจากอาร์เรย์ ฉันจะทำสิ่งนี้ได้อย่างไร
คำตอบ:
array_slice
ส่งคืนชิ้นส่วนของอาร์เรย์
$sliced_array = array_slice($array, 0, 5)
เป็นรหัสที่คุณต้องการในกรณีของคุณเพื่อส่งคืนองค์ประกอบห้าประการแรก
array_combine(array_slice(array_keys($array), 0, 5), array_slice($array, 0, 5))
array_slice
ส่งคืนชิ้นส่วนของอาร์เรย์" แต่ฉันจะแก้ไขคำตอบเพื่อให้ชัดเจนขึ้น
array_splice - ลบส่วนหนึ่งของอาร์เรย์และแทนที่ด้วยส่วนอื่น:
$input = array(1, 2, 3, 4, 5, 6);
array_splice($input, 5); // $input is now array(1, 2, 3, 4, 5)
จากคู่มือ PHP:
array array_splice ( array &$input , int $offset [, int $length = 0 [, mixed $replacement]])
ถ้าความยาวถูกละไว้เอาทุกอย่างจากการชดเชยไปยังจุดสิ้นสุดของอาร์เรย์ หากระบุความยาวและเป็นค่าบวกองค์ประกอบนั้นจะถูกลบออก หากระบุความยาวและเป็นค่าลบส่วนท้ายของส่วนที่ลบจะเป็นองค์ประกอบจำนวนมากจากส่วนท้ายของอาร์เรย์ เคล็ดลับ: หากต้องการลบทุกอย่างออกจากออฟเซ็ตจนถึงสิ้นสุดอาเรย์เมื่อมีการระบุการเปลี่ยนให้ใช้ความยาว count ($ input)
หากคุณต้องการส่งออกองค์ประกอบ 5 ชิ้นแรกคุณควรเขียนดังนี้:
<?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;
}
}
?>
ถ้าคุณต้องการเขียนฟังก์ชั่นที่คืนค่าส่วนหนึ่งของอาร์เรย์คุณควรใช้ array_slice:
<?php
function GetElements( $an_array, $elements ) {
return array_slice( $an_array, 0, $elements );
}
?>
คุณสามารถใช้ฟังก์ชัน array_slice แต่คุณจะใช้ค่าอื่นได้หรือไม่ หรือเฉพาะ 5 ข้อแรก? เพราะถ้าคุณจะใช้ 5 ข้อแรกเท่านั้นคุณสามารถใช้ LIMIT บน SQL
วิธีการเชิงวัตถุเพิ่มเติมจะให้ช่วงกับวิธี # [] ตัวอย่างเช่น
สมมติว่าคุณต้องการ 3 รายการแรกจากอาร์เรย์
หมายเลข = [1,2,3,4,5,6]
หมายเลข [0..2] # => [1,2,3]
สมมติว่าคุณต้องการรายการ x แรกจากอาร์เรย์
หมายเลข [0..x-1]
สิ่งที่ยอดเยี่ยมเกี่ยวกับวิธีการนี้คือถ้าคุณขอรายการมากกว่าที่มีในอาร์เรย์มันจะคืนค่าให้ทั้งอาร์เรย์
หมายเลข [0..100] # => [1,2,3,4,5,6]