gpt4 book ai didi

php - 如何比较两个数组的差异并输出只存在于一个数组中的键?

转载 作者:行者123 更新时间:2023-11-29 01:38:07 25 4
gpt4 key购买 nike

我有一个由文本文件创建的数组 ($name_new):

foreach ($properties as $key => $row) {
$name_new[] = $row['name'];
}

这是 $name_new 的结果:

array(2) {
[0]=>
string(32) "john"
[1]=>
string(32) "frank"
}

我从 mySQL 数据库创建的另一个数组:

$sql = "SELECT * FROM data;                 
$p = $pdo->prepare($sql);
$p->execute();

foreach ($pdo->query($sql) as $row) {
$name_orig[] = $row['name'];
}

这是 $name_orig 的结果:

array(2) {
[0]=>
string(32) "john"
[1]=>
string(32) "sam"
}

我正在比较这两个数组:

if ($name_new != $name_orig) {
$name_result = array_diff_assoc($name_orig, $name_new);
foreach($name_result as $r){
echo "This name is not matching: ".$r;
}
}

所以我的结果是:

这个名字不匹配:sam

我的问题是,我还需要结果中的名称键。但是这个 key 只存在于文本文件中。

如果我这样写:

foreach ($properties as $key => $row) {
$name_new[$key] = $row['name'];
}

这是 $name_new[$key]...

的结果
array(2) {
["123"]=>
string(32) "john"
["456"]=>
string(32) "frank"
}

...我拿到 key 了。但是我怎样才能将这个 key 连接到我的结果 sam

我需要的结果是

这个名字不匹配 sam (Key: 456)

最佳答案

请改进以下代码

if ($name_new != $name_orig) {
$name_result = array_diff_assoc($name_orig, $name_new);
foreach($name_result as $k=> $r){
echo "This name is not matching: ".$r." and key:".$k;
}
}

希望这能行得通

关于php - 如何比较两个数组的差异并输出只存在于一个数组中的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33936273/

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