我有一个由文本文件创建的数组($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)不匹配
请改进以下代码
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;
}
}
希望这能起作用
在比较两个数组时,只需将索引添加到foreach循环中即可:
foreach($name_result as $k => $r){
echo "This name is not matching: ".$r. "(Key:".$k.")";
}