我可以使用array_pop或array_shift从数组中移动项目,但这适用于字符串的开头或结尾。我想通过它的键从数组中提取项目,所以:
$a = [
'first' => '1st',
'second' => '2nd',
'third' => '3rd'
];
$item = pull_by_key( $a, 'second' );
echo $item;
输出将是(并且$ item将设置为)2nd
,结果数组应为:
[ 'first' => '1st', 'third' => '3rd' ]
我可以使用自定义函数执行此操作:
function pull_by_key( &$array, $key ){
$retval = $array[$key];
unset( $array[$key] );
return $retval;
}
...但我想知道是否有一个功能可以做到这一点。我找不到任何东西。
所以,为了说清楚:我不想删除未设置的项目,我想从数组中提取项目。这是一个array_pop
或array_shift
,但不是数组中的第一个或最后一个项目,而是项目的关键字。
答案 0 :(得分:0)
试试这个: -
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
$.post("demo_test_post.asp",
{
name: "Donald Duck",
city: "Duckburg"
},
function(data,status){
alert("Data: " + data + "\nStatus: " + status);
});
});
});
</script>
</head>
<body>
<button>Send an HTTP POST request to a page and get the result back</button>
</body>
</html>
答案 1 :(得分:0)
定义临时数组$tempArray
并将提取的项目推送到$tempArray
:
<?php
$a = [
'first' => '1st',
'second' => '2nd',
'third' => '3rd'
];
echo pull_by_key( $a, 'second' );
function pull_by_key( &$array, $key ){
$tempArray = [];
$tempArray[$key] = $array[$key];
unset( $array[$key] );
return $tempArray[$key];
}
答案 2 :(得分:0)
这正是php的array_splice()
所做的。我只需要首先搜索键的偏移量。为了防止因尝试访问不存在的元素而导致的任何错误,必须使用条件状态。
代码:(Demo)
$a = [
'first' => '1st',
'second' => '2nd',
'third' => '3rd'
];
$find_key='second';
if(($offset=array_search($find_key,array_keys($a)))!==false){
$pulled=array_splice($a,$offset,1);
var_export($pulled);
echo "\n";
var_export($a);
}else{
echo "$find_key not found";
}
输出:
array (
'second' => '2nd',
)
array (
'first' => '1st',
'third' => '3rd',
)