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)

实现这一目标的最有效方法是什么?换句话说,我可以用一个命令扔掉 $array 的所有其他项目吗?

4

8 回答 8

10

使用array_shift().

array_shift()将数组的第一个值移开并返回,将数组缩短一个元素并将所有内容向下移动。所有数字数组键都将被修改为从零开始计数,而文字键不会被触摸。

$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

有2个选择,真的。您可以选择数组中的第一项

$array2 = $array[0];

或者你可以使用 array_slice 作为

$array2 = array_slice($array, 0, 1);
于 2012-08-22T12:33:12.270 回答
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

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 回答