扔掉整个阵列但是第一个项目

时间:2012-08-22 12:29:57

标签: php

假设我有以下数组:

$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的所有其他项吗?

8 个答案:

答案 0 :(得分:10)

使用 array_shift()

  

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

$array2 = array_shift($array);

这意味着$array2现在拥有第一个元素,而$array拥有其余元素。

答案 1 :(得分:2)

试试这个

 $array2 = array_shift($array);

答案 2 :(得分:1)

$newArr = reset($array);

我认为没有问题。

答案 3 :(得分:0)

真的有两种选择。您可以只选择数组中的第一项

$array2 = $array[0];

或者您可以将array_slice用作

$array2 = array_slice($array, 0, 1);

答案 4 :(得分: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 ));

答案 5 :(得分:0)

Array_shift可能是最好的方法。但只是为了好玩,这是另一种方式。

$first_element = end(array_reverse($array));

答案 6 :(得分:0)

$k = array_merge(array('key' => key($array)), array_shift($array));

以指定格式返回。

key为您提供第一个密钥,array_shift为您提供第一个密钥,并使用array_merge进行合并

答案 7 :(得分: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);