按键从数组中拉出项目

时间:2017-07-31 10:40:58

标签: php arrays

我可以使用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_poparray_shift,但不是数组中的第一个或最后一个项目,而是项目的关键字。

3 个答案:

答案 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',
)