我想捕获数组的第一个元素及其在第二个数组中的值,从第一个数组中删除它。
是否有一个核心PHP函数可以完成my_function
在这里做的事情?
function my_function(&$array) {
$key = current(array_keys($array));
$value = $array[$key];
unset($array[$key]);
return [$key => $value];
}
$array = [
'color' => 'red',
'car' => 'ford'
'house' => 'cottage',
];
$top = my_function($array);
print_r($top);
print_r($array);
输出:
Array
(
[color] => red
)
Array
(
[car] => ford
[house] => cottage
)
如果不是核心功能,是否有更简单的方法来实现此行为? IIRC,通过引用传递变量是不受欢迎的。
奖金问题:对于数组中的键和元素的组合,是否有一个词?我觉得自己喜欢'元素'并不一定包括密钥。
编辑由于似乎存在一个常见的误解,至少在PHP 7中,array_shift
不执行所需的行为。它只返回第一个值,而不是第一个元素:
$ cat first_element.php
<?php
$array = [
'color' => 'red',
'car' => 'ford',
'house' => 'cottage',
];
$top = array_shift($array);
print_r($top);
print_r($array);
$ php first_element.php
redArray
(
[car] => ford
[house] => cottage
)
答案 0 :(得分:3)
试试这个(array_splice):
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/qtip2/3.0.3/basic/jquery.qtip.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/qtip2/3.0.3/basic/jquery.qtip.min.css">
<table>
<tbody>
<tr>
<td>
<span qtip="Tooltip for Name">Customer.Name</span>
</td>
<td>
<span qtip="Tooltip for Address">Customer.Address</span>
</td>
<td>
<span qtip="Tooltip for Phonenumber">Customer.Phonenumber</span>
</td>
</tr>
</tbody>
</table>
$top = array_splice($array, 0, 1);
将包含第一个元素,$top
将包含其余元素。
答案 1 :(得分:1)
array_splice
并不总是保留密钥,因此只需获取密钥并结合array_shift
的结果即可将其删除:
$result = [key($array) => array_shift($array)];
如果需要,重置数组指针:
reset($array) && $result = [key($array) => array_shift($array)];
答案 2 :(得分:0)
function my_function($array) {
$first_key = key($array);
return array($first_key =>$array[$first_key] );
}
$array = array( 'color' => 'red', 'car' => 'ford','house' => 'cottage' );
$first = my_function($array);
array_shift($array);print_r($first);print_r($array);
答案 3 :(得分:0)
我做了这个功能:
function array_extract(array &$array, $num) {
$output = array_slice($array,0, $num);
array_splice($array,0, $num);
return $output;
}
这就是它的作用
$ cat test.php
<?php
$test = [234,25,45,78,56];
echo "test:\n";
print_r($test);
while( count($test) ) {
echo "extraction:\n";
print_r(array_extract($test, 2));
echo "\ntest:\n";
print_r($test);
}
$ php test.php
test:
Array
(
[0] => 234
[1] => 25
[2] => 45
[3] => 78
[4] => 56
)
extraction:
Array
(
[0] => 234
[1] => 25
)
test:
Array
(
[0] => 45
[1] => 78
[2] => 56
)
extraction:
Array
(
[0] => 45
[1] => 78
)
test:
Array
(
[0] => 56
)
extraction:
Array
(
[0] => 56
)
test:
Array
(
)
答案 4 :(得分:-3)
非常简单:
$array1 = [
'color' => 'red',
'car' => 'ford'
'house' => 'cottage',
];
$array2 = array_unshift($array1);
--> result
$array2 = [
'color' => 'red'
];
$array1 = [
'car' => 'ford'
'house' => 'cottage',
];