7

ここからの例http://php.net/manual/en/function.array-slice.php

$input = array("a", "b", "c", "d", "e");
$output = array_slice($input, 2);      // returns "c", "d", and "e"
$output = array_slice($input, -2, 1);  // returns "d"
$output = array_slice($input, 0, 3);   // returns "a", "b", and "c"

しかし、たとえば "a"、"d"、"e" を取得するにはどうすればよいでしょうか。

お気に入り

$output = array_slice($input, 0, 1);
$output = array_slice($input, 3, 1);
$output = array_slice($input, -1, 1);

しかし、1つの変数で。出来ますか?

アップデート。配列の 1 番目、3 番目、および最後の要素を使用したい。1番目、3番目、最後の要素を抽出し、3つの要素のみで新しい配列を作成するかのように。

4

1 に答える 1

8

配列全体に広がる任意の数の要素ではなく、配列のサブシーケンスのみを抽出できるarray_merge()ため、ミックスに投入する必要があります。array_slice()各サブシーケンスを個別に抽出し、それらを 1 つの配列にマージします。

$slice1 = array_slice($input, 0, 1);
$slice2 = array_slice($input, -2, 2);
$output = array_merge($slice1, $slice2);

ただし、これは、配列内の各要素を本当に知っている場合にのみ機能することに注意してください。この場合、直接配列アクセスを使用することもできます。これにより、生成されるオーバーヘッドが少なくなり、読みやすくなります。

$output = array($input[0], $input[3], $input[4]);

array_filter()カスタムイテレータを使用する方がはるかに合理的かもしれません。しかし、タスクについて明確に説明するには、タスクに関する十分な情報が提供されていません。

編集:
それが表記上の問題である場合は、関連するすべてのインデックスを含む配列を指定してから、配列から関連する要素のみを抽出array_fill_keys()するために使用するために使用して切り替えることができます:array_intersect_key()

$indexes = array(0, 3, 4);
$indexArray = array_fill_keys($indexes, true);
$output = array_intersect_key($input, $indexArray);
于 2013-05-06T08:25:04.287 に答える