Pie*_*oni 22 php associative-array
设S是PHP中的关联数组,我需要从中检索并提取第一个元素,包括值和键.
我会用
value1=array_pop(S);
Run Code Online (Sandbox Code Playgroud)
但它只给了我价值.
我可以用
K=array_keys(S);
key1=array_pop(K);
value1=array_pop(S);
Run Code Online (Sandbox Code Playgroud)
但它很复杂,因为它需要有两份相同的数据.由于数组本身是数组数组中的元素,因此令人困惑.在提取它时,必须有一种更优雅的方式来读取这对键/值.
hak*_*kre 37
$value = reset($arr);
$key = key($arr);
Run Code Online (Sandbox Code Playgroud)
(以该顺序)
unset($arr[$key]); # in case you want to remove it.
Run Code Online (Sandbox Code Playgroud)
但array_pop()
PHP手册正在使用最后一个元素:
$value = end($arr);
$key = key($arr);
unset($arr[$key]); # in case you want to remove it.
Run Code Online (Sandbox Code Playgroud)
请参阅end()
PHP手册.
list($value, $key) = array(end($arr), key($arr));
Run Code Online (Sandbox Code Playgroud)
要么
extract(array('value'=>end($arr), 'key'=>key($arr)));
Run Code Online (Sandbox Code Playgroud)
要么
end($arr);
list($key, $value) = each($arr);
Run Code Online (Sandbox Code Playgroud)
或者你喜欢什么样的游戏;)
到目前为止,它缺少处理空数组.因此需要检查是否存在最后(第一个)元素,如果没有,则设置$key
为null
(因为null
不能是数组键):
for($key=null;$key===null&&false!==$value=end($arr);)
unset($arr[$key=key($arr)]);
Run Code Online (Sandbox Code Playgroud)
这将给出一个填充数组,如$arr = array('first' => '1st', 'last' => '2nd.');
:
string(4) "2nd." # value
string(4) "last" # key
array(1) { # leftover array
["first"]=>
string(3) "1st"
}
Run Code Online (Sandbox Code Playgroud)
还有一个空数组:
bool(false) # value
NULL # key
array(0) { # leftover array
}
Run Code Online (Sandbox Code Playgroud)
如果你不相信unset()
有你需要(这我不认为这是一个真正的问题,虽然我还没有运行任何指标)的性能,您可以使用本机array_pop()
实施,以及(但我真的认为unset()
作为语言结构可能更快):
end($arr);
$key = key($arr);
$value = array_pop($arr);
Run Code Online (Sandbox Code Playgroud)
$value = reset($array);
$key = key($array);
Run Code Online (Sandbox Code Playgroud)
编辑:Hakre 击败了我 :-)
$arr = array('k1' => 'v1', 'k2' => 'v2', 'k3' => 'v3');
$a = array_slice($arr, 0, 1);
var_dump($a);
$arr = array_slice($arr, 1);
var_dump($arr);
array(1) {
["k1"]=>
string(2) "v1"
}
array(2) {
["k2"]=>
string(2) "v2"
["k3"]=>
string(2) "v3"
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26753 次 |
最近记录: |