配列から最初のxアイテムを返す


139

配列から最初の5項目を返したいのですが。これどうやってするの?


5
この質問に反対票があるwtf?
SilentGhost 2009年

2
それぞれの答えが良いので、私はすべてを賛成しました。
Vili

回答:


273

array_slice 配列のスライスを返します

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

あなたのケースで最初の5つの要素を返すために必要なコードです


1
ただし、これは連想配列では機能しません。キーは失われます。
ESCOBAR 2014

4
@ESCOBAR:連想配列は必ずしも順序を持っている必要はなく、キーを値にマップするだけです。したがって、「値3〜7」はとにかく意味がありません…
knittl '06 / 06/15

正しいが、この場合は注文とは無関係です。最初の5アイテムほどです。ここではarray_sliceは使用できません。
ESCOBAR 2014年

2
@ESCOBAR:定義済みの注文がない場合、最初のアイテムはありません。「最初」は、どのアイテムが他のアイテムの前か後かがわかる場合にのみ機能します。:(まだ定義された順序はあるが)しかし、ちょうどそれの楽しみのために、あなたは、配列の値を持つキーを再結合することができますarray_combine(array_slice(array_keys($array), 0, 5), array_slice($array, 0, 5))
knittlは

1
@darkhorizo​​n: " 配列のスライスをarray_slice 返します "。しかし、私はそれを少し明確にするために私の回答を編集します。
knittl 2015年

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

場合は長さが省略されたoffsetから配列の最後まで、すべてを削除します。長さが指定されていて正の場合、その数の要素が削除されます。長さが指定され、負の場合、削除された部分の終わりは、配列の終わりからの要素数になります。ヒント:置換も指定されている場合に、オフセットから配列の最後までをすべて削除するには、長さとしてcount($ input)を使用します。


最初の5つの要素を返す構文は、array_splice($ input、5)です
aland

@AndrejsCainikovs php.netによると、「長さが省略されている場合、シーケンスにはオフセットから配列の最後までのすべてが含まれます。」Answerの太字のテキストは、正反対です。
カルコ

@カルコ:あなたはおそらく間違ったページを見ているでしょう。私のコピー貼り付けステートメントはまだ有効です:php.net/manual/en/function.array-splice.php
Andrejs Cainikovs

@AndrejsCainikovs本当の仲間、私はarray_sliceのページを持っていて、あなたの答えがarray_spliceについてであることに気づかなかった...私の悪い:D
Kalko

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つだけを使用する場合は、SQLでLIMITを使用できるためです。


-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は範囲をサポートしていません。あなたはルビーやそのようなことについて話していませんか?
ビクターマルクク

2
「よりオブジェクト指向の方法」?この答えは、オブジェクト指向プログラミングとは何の関係もありません。
Ducky
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.