我有一个数组:
阵列(4 = > '苹果',7 = >“橙色”,13 = >“李子”)
我想要得到这个数组的第一个元素。预期结果:串苹果
一个要求:它不能通过引用传递来完成,所以array_shift不是一个好的解决方案。
我该怎么做呢?
我有一个数组:
阵列(4 = > '苹果',7 = >“橙色”,13 = >“李子”)
我想要得到这个数组的第一个元素。预期结果:串苹果
一个要求:它不能通过引用传递来完成,所以array_shift不是一个好的解决方案。
我该怎么做呢?
当前回答
当前数组($)
根据PHP手册,返回数组的第一个元素。
每个数组都有一个指向其“当前”元素的内部指针,该指针被初始化为插入数组的第一个元素。
所以它一直工作,直到你重新定位数组指针,否则你将不得不使用reset(),它将倒带数组并返回数组的第一个元素
根据PHP手动复位。
Reset()将数组的内部指针倒回到第一个元素,并返回第一个数组元素的值。
current()和reset()的示例
$array = array('step one', 'step two', 'step three', 'step four');
// by default, the pointer is on the first element
echo current($array) . "<br />\n"; // "step one"
//Forward the array pointer and then reset it
// skip two steps
next($array);
next($array);
echo current($array) . "<br />\n"; // "step three"
// reset pointer, start again on step one
echo reset($array) . "<br />\n"; // "step one"
其他回答
这是一个结合了array_slice和implode的例子:
$arr = array(1, 2, 3);
echo implode(array_slice($arr, 0, 1));
// Outputs 1
/*---------------------------------*/
$arr = array(
'key_1' => 'One',
'key_2' => 'Two',
'key_3' => 'Three',
);
echo implode(array_slice($arr, 0, 1));
// Outputs One
Use:
$first = array_slice($array, 0, 1);
$val= $first[0];
默认情况下,array_slice不保留键,所以我们可以安全地使用0作为索引。
正如Mike指出的(最简单的方法):
$arr = array( 4 => 'apple', 7 => 'orange', 13 => 'plum' );
echo reset($arr); // Echoes "apple"
如果你想获取密钥:(重置后执行)
echo key($arr); // Echoes "4"
来自PHP的文档:
混合重置(数组|对象和$array);
描述:
reset()返回数组的内部指针指向第一个元素并返回第一个元素的值,如果数组为 空的。
$arr = $array = array( 9 => 'apple', 7 => 'orange', 13 => 'plum' );
echo reset($arr); // echoes 'apple'
如果不想丢失当前指针的位置,只需为数组创建一个别名。
这有点晚了,但我遇到了一个问题,我的数组包含数组元素作为其子元素,因此我不能获得第一个数组元素的字符串表示形式。通过使用PHP的current()函数,我管理了这个:
<?php
$original = array(4 => array('one', 'two'), 7 => array('three', 'four'));
reset($original); // to reset the internal array pointer...
$first_element = current($original); // get the current element...
?>
感谢所有当前的解决方案帮助我得到这个答案,我希望这能帮助到别人!