gpt4 book ai didi

PhP:合并具有匹配键的数组并删除/删除额外的不匹配值

转载 作者:行者123 更新时间:2023-12-05 02:24:11 27 4
gpt4 key购买 nike

我想根据它们的键合并这两个数组,并且只保留键匹配。合并后的数组应该保留键,值应该来自第二个数组。

数组 #1:我访问过的国家

Array
(
[AL] => 113
[AZ] => 83
[CA] => 50
[CO] => 1
...

数组 #2:所有州

Array
(
[AL] => ALABAMA
[AK] => ALASKA
[AZ] => ARIZONA
[AR] => ARKANSAS
[CA] => CALIFORNIA
[CO] => COLORADO
[CT] => CONNECTICUT
...

所以,如果我去过一个州,我想从数组 2 中获取该州的名称。并从数组 #2 中丢弃所有不匹配的节点。

期望的结果

Array
(
[AL] => ALABAMA
[AZ] => ARIZONA
[CA] => CALIFORNIA
[CO] => COLORADO
...

我在 PHP 手册和 StackOverflow 上进行了广泛的研究,但找不到具体的答案。我认为它可能存在于比我目前能够做到的更复杂的用户定义函数中。

array_merge() 几乎完成了我想要的,但随后它将我没有访问过的状态添加到数组的末尾

array_intersect_key() 也接近了。它只保留匹配的键,然后删除值。

最佳答案

在编写更好的解决方案的同时享受这个效率稍低的示例。 http://codepad.org/hIjPEM81

低效解决方案 1:

<?php
$allstates=array("MO"=>"Missouri", "TX"=>"Texas");
$statesIveBeenTo = array("MO"=>1);
foreach($allstates as $k=>$v){
if(!array_key_exists($k,$statesIveBeenTo)){
unset($allstates[$k]);
}
}

var_dump($allstates);

输出:

array(1) {
["MO"]=>
string(8) "Missouri"
}

解决方案 2:

$test = array_intersect_key($allstates, $statesIveBeenTo);
var_dump($test);

与上面相同的输出。

关于PhP:合并具有匹配键的数组并删除/删除额外的不匹配值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15306680/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com