我有一个由文本文件创建的数组($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
我的问题是,我在结果中也需要键名。但是这个密钥只存在于文本文件中。
所以,如果我写这个:
foreach ($properties as $key => $row) {
$name_new[$key] = $row['name'];
}
以下是$name_new[$key]
...
array(2) {
["123"]=>
string(32) "john"
["456"]=>
string(32) "frank"
}
......我拿到了钥匙。但是如何将此密钥连接到我的结果sam
我需要的结果是
此名称与sam不匹配(键:456)
答案 0 :(得分:3)
请改进以下代码
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;
}
}
希望这有效
答案 1 :(得分:1)
比较两个数组时,只需将索引添加到foreach循环中即可:
foreach($name_result as $k => $r){
echo "This name is not matching: ".$r. "(Key:".$k.")";
}