Php 如何从变量生成数组?

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->

我想比较文本文件和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->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" 
}