2015-10-23 72 views
1

我有一个文本文件,并从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" 
     } 
    } 

我很抱歉,我很困惑该怎么做,但我的每一丝感激。

+0

你不需要吮吸整个数据库到PHP只是为了比较它与文件。所有你需要的是找出你的文件中有多少值,并检查它们是否全部在数据库中。例如3值,做'选择count(*)from ...(val1,val2,val3)'中的值,如果count返回为'3',你就知道它们都在那里。 –

+0

@Marc:我需要比较字符串。所以如果文本文件中的“A2345”出现错误,例如“A234?”那么我需要一个错误消息 – Jarla

+0

请注意,您所要瞄准的(数组的结构)将不可能,因为您将替换键的值。一旦你设置了'[“cat”] => “A2345”,如果你尝试设置'[“cat”] =>“B7890”',它会用'B7890'替换第一个值('A2345')。关于查询的结果,因为它好像你正在使用PDO,[fetch_assoc](http://php.net/manual/en/pdostatement.fetch.php),你可以得到没有'column'索引的结果。 – FirstOne

回答

1

我找到了一个解决方案,我可以工作:

文本文件:

$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" 
} 

现在我有两个阵列我可以比较!

+0

我会小心上面的代码。通过它的外观,你正在为两个阵列使用'$ cat'。如果按顺序使用此代码,则可能会覆盖该变量! –

相关问题