2

次の配列があるとします。

$array(
  '32' => array('name' => 'paul', 'age' => 43),
  '17' => array('name' => 'eric', 'age' => 19),
  '99' => array('name' => 'dave', 'age' => 65)
)

私は最初の$array項目にのみ興味があります:

$array2 = array('key'=> 32, 'name' => 'paul', 'age' => 43)

これを達成するための最も効率的な方法は何ですか? つまり、1 つのコマンドで $array の他のすべてのアイテムを破棄できますか?

4

8 に答える 8

10

を使用しarray_shift()ます。

array_shift()配列の最初の値をシフトして返し、配列を 1 要素短くしてすべてを下に移動します。すべての数値配列キーはゼロからカウントを開始するように変更されますが、リテラル キーは変更されません。

$array2 = array_shift($array);

これは$array2、 が最初の要素を$array保持し、残りの要素を保持することを意味します。

于 2012-08-22T12:32:00.307 に答える
2

これを試して

 $array2 = array_shift($array);
于 2012-08-22T12:32:16.047 に答える
1
$newArr = reset($array);

それで問題ないと思います。

于 2012-08-22T12:32:14.117 に答える
0

reset配列を指定すると、最初の要素も返されます(end()最後の要素が返されます)。

$first = reset( $array );

http://www.php.net/manual/en/function.reset.php

しかし、あなたが望む正確な結果を生成するために、あなたはこのようなものを書くことができます

foreach( $array as $k => $first ){ // get first sub-array and its key
  $first['key'] = $k; // add the key
  break;              // we don't care about the other elements, goodbye
}

Futuregeekのメソッドが修正されました:

$first =

  // returns first element, and sets it as the current element for key()
  reset( $array )

  // instead of array_merge, (sometimes) you can use the + operator
  +

  // key() will return the appropriate key after reset()
  array('key' => key( $array ));
于 2012-08-22T12:37:26.750 に答える
0

本当に2つのオプションがあります。配列の最初の項目を選択することもできます

$array2 = $array[0];

または、array_slice を次のように使用できます。

$array2 = array_slice($array, 0, 1);
于 2012-08-22T12:33:12.270 に答える
0

Array_shift がおそらく最良の方法です。しかし、ここでの楽しみは別の方法です。

$first_element = end(array_reverse($array));
于 2012-08-22T12:41:24.627 に答える
0
$k = array_merge(array('key' => key($array)), array_shift($array));

指定された形式で返します。

keyは最初のキーを取得し、array_shiftは最初の値を取得し、array_merge を使用してマージします

于 2012-08-22T12:42:24.283 に答える
0
Try It : 


$arr = array(
  '32' => array('name' => 'paul', 'age' => 43),
  '17' => array('name' => 'eric', 'age' => 19),
  '99' => array('name' => 'dave', 'age' => 65)
);

foreach($arr as $key => $value)
{
    $result[$key] = $value;
    break;
}
print_r($result);

##-------Secount Way If you don't want Key 32--------------------------

$arr = array(
  '32' => array('name' => 'paul', 'age' => 43),
  '17' => array('name' => 'eric', 'age' => 19),
  '99' => array('name' => 'dave', 'age' => 65)
);

$arr = array_reverse($arr);
print_r(end($arr));

#------ Third Way If you don't want  Key 32 -------------

echo "<br>=======<br>";

$arr = array(
  '32' => array('name' => 'paul', 'age' => 43),
  '17' => array('name' => 'eric', 'age' => 19),
  '99' => array('name' => 'dave', 'age' => 65)
);

$array2 = array_shift($arr);
print_r($array2);
于 2012-08-22T12:45:34.003 に答える