我有一个文本文件,并从MySQL数据库值我想比较:如何从一个变量创建一个数组?
这里有值我从文本文件获取:
foreach($list as $row) {
echo $row['cat']."<br>";
}
我的结果:
A2345
B7890
这里是从我的数据库中的值:
$sql = "SELECT cat FROM animals WHERE id = '$id'";
$q = $pdo->prepare($sql);
$q->execute();
foreach ($pdo->query($sql) as $row) {
echo $row['cat']."<br>";
}
结果:
A2345
B7890
到目前为止一切都很好。
现在我的问题:
比较数据库内容和文本文件内容,我想每一个存储这两个结果在一个数组并加以比较。
所以我的目的是让两个来源如下结果:
array(2) {
["cat"]=>
string(5) "A2345"
["cat"]=>
string(5) "B7890"
}
所以最终我可以这样写:
If (array1 == array2) { echo "The content of database and textfile match" }
这里来我的问题。我不知道如何实现它。因为如果我写的......
echo "<pre>";
var_dump ($list);
echo "</pre>";
...我会得到这样的结果:
array(2) {
[0]=>
array(2) {
["cat"]=>
string(5) "A2345"
["name"]=>
string(3) "tom"
}
[1]=>
array(2) {
["cat"]=>
string(5) "B7890"
["name"]=>
string(3) "sam"
}
}
如果我写这...
echo "<pre>";
var_dump ($list["cat"]);
echo "</pre>";
...我会得到:
NULL
而且还与获取数据库结果在阵列中对我来说是一个巨大的问题。
我写道:
foreach ($pdo->query($test) as $row) {
$data[] = $row;
echo "<pre>";
var_dump($data);
echo "</pre>";
}
但我的结果是:
array(1) {
[0]=>
array(2) {
["cat"]=>
string(32) "A2345"
[0]=>
string(32) "A2345"
}
}
array(2) {
[0]=>
array(2) {
["cat"]=>
string(32) "A2345"
[0]=>
string(32) "A2345"
}
[1]=>
array(2) {
["cat"]=>
string(32) "B7890"
[0]=>
string(32) "B7890"
}
}
我很抱歉,我很困惑该怎么做,但我的每一丝感激。
你不需要吮吸整个数据库到PHP只是为了比较它与文件。所有你需要的是找出你的文件中有多少值,并检查它们是否全部在数据库中。例如3值,做'选择count(*)from ...(val1,val2,val3)'中的值,如果count返回为'3',你就知道它们都在那里。 –
@Marc:我需要比较字符串。所以如果文本文件中的“A2345”出现错误,例如“A234?”那么我需要一个错误消息 – Jarla
请注意,您所要瞄准的(数组的结构)将不可能,因为您将替换键的值。一旦你设置了'[“cat”] => “A2345”,如果你尝试设置'[“cat”] =>“B7890”',它会用'B7890'替换第一个值('A2345')。关于查询的结果,因为它好像你正在使用PDO,[fetch_assoc](http://php.net/manual/en/pdostatement.fetch.php),你可以得到没有'column'索引的结果。 – FirstOne