Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 扔掉整个阵法,但扔掉第一项_Php - Fatal编程技术网

Php 扔掉整个阵法,但扔掉第一项

Php 扔掉整个阵法,但扔掉第一项,php,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' =&

假设我有以下数组:

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

使用

array\u shift()
将数组的第一个值移位并返回, 将阵列缩短一个元素,并向下移动所有元素。全部的 数字数组键将被修改为从零开始计数 而文字键不会被触摸

这意味着
$array2
现在保存第一个元素,而
$array
保存其余元素

$newArr = reset($array);
我想这没问题。

试试这个

 $array2 = array_shift($array);

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

$array2 = $array[0];
或者您可以使用array_slice作为

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

reset
t数组还返回第一个元素(
end()
返回最后一个元素):

但要生成您想要的确切结果,您可以编写如下内容

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

数组移位可能是最好的方法。但仅仅为了好玩,这里还有另一种方式

$first_element = end(array_reverse($array));
以指定格式返回

获取第一个键,获取第一个值,然后使用合并尝试: $arr=数组( '32'=>array('name'=>'paul','age'=>43), '17'=>数组('name'=>'eric','age'=>19), '99'=>数组('name'=>'dave','age'=>65) ); foreach($arr作为$key=>$value) { $result[$key]=$value; 打破 } 打印(结果); ##-------如果您不需要密钥32,请按顺序计数-------------------------- $arr=数组( '32'=>array('name'=>'paul','age'=>43), '17'=>数组('name'=>'eric','age'=>19), '99'=>数组('name'=>'dave','age'=>65) ); $arr=阵列_反向($arr); 打印(结束($arr)); #------第三种方法,如果您不需要密钥32------------- 回声“
==========
”; $arr=数组( '32'=>array('name'=>'paul','age'=>43), '17'=>数组('name'=>'eric','age'=>19), '99'=>数组('name'=>'dave','age'=>65) ); $array2=阵列移位($arr); 印刷费($array2);
是否要使用
键扩展第一个元素?
缩短+重置数组:
$k=reset($array)+数组('key'=>key($array)):)与
结束
相反的是
重置
,您不必反转数组!请注意,这将生成一个数组,其中包含另一个键为零的数组。只需执行
$newArr=reset($array)应该是OP想要的更多(减去
键)。
$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 ));
$first_element = end(array_reverse($array));
$k = array_merge(array('key' => key($array)), array_shift($array));
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);