배열에서 첫 x 항목 반환


139

배열에서 처음 5 개의 항목을 반환하고 싶습니다. 어떻게해야합니까?


5
이 질문에 downvotes가있는 wtf?
SilentGhost

2
각 대답이 좋기 때문에 모든 것을 찬성했습니다.
Vili

답변:


273

array_slice 배열의 슬라이스를 돌려줍니다

$sliced_array = array_slice($array, 0, 5)

첫 다섯 요소를 반환하기 위해 원하는 코드입니다.


1
그러나 이것은 연관 배열에서는 작동하지 않습니다. 열쇠가 분실됩니다.
ESCOBAR

4
@ESCOBAR : 연관 배열은 반드시 순서를 가질 필요는 없으며 키를 값에만 매핑합니다. "값 3에서 7"은 어쨌든 의미가 없습니다…
knittl

그러나이 경우 주문과 관련이 없습니다. 처음 5 개 항목에 불과합니다. 여기서는 array_slice를 사용할 수 없습니다.
ESCOBAR

2
@ESCOBAR : 정의 된 주문 이 없으면 첫 번째 항목 이 없습니다 . "첫 번째"는 다른 항목의 앞뒤에 어떤 항목이 있는지 알 수있는 경우에만 작동합니다. 그러나 그것의 재미를 위해, 배열의 값으로 키를 다시 결합 할 수 있습니다 (아직 정의 된 순서는 없지만) :array_combine(array_slice(array_keys($array), 0, 5), array_slice($array, 0, 5))
knittl

1
@darkhorizon : " array_slice 배열의 슬라이스를 반환 합니다". 그러나 나는 좀 더 명확하게 답변을 편집 할 것입니다.
knittl

9

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]])

경우 길이가 생략 어레이의 끝에 오프셋에서 모두 제거 . 길이가 지정되고 양수이면 많은 요소가 제거됩니다. 길이가 지정되고 음수이면 제거 된 부분의 끝은 배열 끝의 많은 요소가됩니다. 팁 : 교체가 지정된 경우 오프셋에서 배열 끝까지 모든 것을 제거하려면 length에 count ($ input)를 사용하십시오.


처음 5 개의 요소를 반환하는 구문은 array_splice ($ input, 5)
aland

@AndrejsCainikovs php.net에 따르면, "길이를 생략하면, 배열은 오프셋부터 배열의 끝까지 모든 것을 갖습니다." 답변의 굵은 글씨체는 정반대입니다.
Kalko

@ 칼코 : 아마 잘못된 페이지를 보았을 것입니다. 복사하여 붙여 넣은 내용은 여전히 ​​유효합니다. php.net/manual/en/function.array-splice.php
Andrejs Cainikovs

@AndrejsCainikovs 진정한 친구, array_slice에 대한 페이지가 있고 귀하의 답변이 array_splice에 관한
것임을 알지 못했습니다

3

처음 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 );
  }

?>

0

array_slice 함수를 사용할 수 있지만 다른 값을 사용합니까? 아니면 처음 5 개만? 처음 5 개만 사용하는 경우 LIMIT on SQL을 사용할 수 있기 때문입니다.


-4

보다 객체 지향적 인 방법은 # [] 메소드에 범위를 제공하는 것입니다. 예를 들어 :

배열에서 처음 3 개 항목을 원한다고 가정하십시오.

숫자 = [1,2,3,4,5,6]

숫자 [0..2] # => [1,2,3]

배열에서 첫 x 항목을 원한다고 가정하십시오.

숫자 [0..x-1]

이 방법의 가장 큰 장점은 배열보다 많은 항목을 요청하면 전체 배열을 반환합니다.

숫자 [0..100] # => [1,2,3,4,5,6]


3
그러나 PHP는 범위를 지원하지 않습니다. 루비 나 그와 비슷한 것에 대해 이야기하고 있지 않습니까?
Victor Marchuk

2
"더 객체 지향 방식"? 이 답변은 객체 지향 프로그래밍과 관련이 없습니다.
Ducky
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.