Php 如何从变量生成数组?
我想比较文本文件和mySQL数据库中的值: 以下是我从文本文件中获得的值:Php 如何从变量生成数组?,php,mysql,Php,Mysql,我想比较文本文件和mySQL数据库中的值: 以下是我从文本文件中获得的值: foreach($list as $row) { echo $row['cat']."<br>"; } 以下是我的数据库中的值: $sql = "SELECT cat FROM animals WHERE id = '$id'"; $q = $pdo->prepare($sql); $q->execute(); foreach ($pdo->
foreach($list as $row) {
echo $row['cat']."<br>";
}
以下是我的数据库中的值:
$sql = "SELECT cat FROM animals WHERE id = '$id'";
$q = $pdo->prepare($sql);
$q->execute();
foreach ($pdo->query($sql) as $row) {
echo $row['cat']."<br>";
}
到目前为止,一切看起来都很好
现在我的问题是: 为了比较数据库内容和文本文件内容,我想将这两个结果分别存储在一个数组中并进行比较 因此,我的目标是为这两个来源获得以下结果:
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>";
NULL
如果我写这个
同时,将数据库结果放入数组中对我来说也是一个巨大的问题
我写道:
$cat = array();
foreach($list as $row) {
$cat[] = $row['cat'];
}
var_dump($cat);
很抱歉,我对该做什么感到困惑,但我很感激每一个提示 我找到了一个可以使用的解决方案: 对于文本文件:
foreach($list as $row) {
echo $row['cat']."<br>";
}
对于数据库:
$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
现在我有两个数组可以比较 您不需要将整个数据库吸入php,只需将其与文件进行比较。您所需要的只是计算出文件中有多少个值,并检查它们是否都在数据库中。e、 g.3值,从中选择计数(*)。。。如果值在(val1,val2,val3),如果计数返回为
3
,您就知道它们都在那里。@Marc:我需要比较字符串。因此,如果文本文件中的“A2345”出现错误,例如“A234?”,那么我需要一条错误消息。请注意,您的目标(数组的结构)是不可能的,因为您将替换键的值。设置[“cat”]=>“A2345”
后,如果尝试设置[“cat”]=>“B7890”
,它将用B7890
替换第一个值(A2345
)。关于查询的结果,因为您似乎在使用PDO,因此,您可以在不使用列
索引的情况下获得结果。@FirstOne:我想知道,使用echo
我可以得到我想要的结果。我从文本文件中获得相同的值,然后从数据库中获得相同的值。我只需要比较一下。是否可以根据结果创建数组?当您运行foreach($list as$row){
,它将循环数值索引(0
,1
),只有这样您才能访问所需的键。键是否始终为cat
?我会小心使用上述代码。从外观上看,您对两个数组都使用了$cat
。如果按顺序使用此代码,您可能会覆盖变量!
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"
}
}
$cat = array();
foreach($list as $row) {
$cat[] = $row['cat'];
}
var_dump($cat);
$cat = array();
foreach ($pdo->query($sql) as $row) {
$cat[] = $row['cat'];
}
var_dump($cat);
array(2) {
[0]=> string(5) "A2345"
[1]=> string(5) "B7890"
}