从外部将数组与数组相结合

时间:2014-09-12 19:45:06

标签: php mysql arrays

首先,我不确定标题是否正确但这是我想要做的。我想使用从DB中选择的数组并在for loop中使用它。当我转储数组(//print_r($ns1);)时,它可用。但是print_r($host);转储在我print_r时没有数据。我认为问题出在$host[] = "@$ns1 $subdomain";,但我不太确定。为什么我不能print_r($host);?请提前帮助和谢谢。

$sql = "SELECT subdomain, ns1, ns2, id_user, counter FROM ns WHERE counter = 1";
$result = mysqli_query($con,$sql);

$subdomain = array();
$ns1 = array();
$ns2 = array();
$id_user = array();
$counter = array();

// Associative array
while ($row = mysqli_fetch_array($result,MYSQLI_ASSOC)){;
$subdomain []= $row['subdomain'];
$ns1 []= $row['ns1'];
$ns2 []= $row['ns2'];
$id_User[]= $row['id_user'];
$counter []= $row['counter'];
}

$total= count($subdomain);

$host = array();
$ip = array();
$mx = array();

for ($x = 1; $x <= $total; $x++) {

//print_r($subdomain); // both data is available
//print_r($ns1);

$host[] = "@$ns1 $subdomain";
print_r($host);
$ip = `/usr/bin/dig $host +short A`;
$mx = `/usr/bin/dig $host +short MX`;
print_r($host);

}

1 个答案:

答案 0 :(得分:2)

在你的代码中,$ ns1和$ subdomain是数组,但你使用它们就好像它们是字符串一样。当你这样做时,PHP唯一要做的就是一个数组到字符串的转换通知,同时返回一个Array的值。如果要访问阵列中的数据,则需要执行以下操作:

$host[] = "@" . $ns1[$x] . " " . $subdomain[$x];

同样,当尝试访问主机阵列中的数据时,如果要访问其中的数据,则需要提供索引:

$ip = `/usr/bin/dig $host[$x] +short A`;
$mx = `/usr/bin/dig $host[$x] +short MX`;

尽管如此,我怀疑$ host应该是一个字符串而不是一个数组:

for ($x = 1; $x <= $total; $x++) {
    $host = "@" . $ns1[$x] . " " . $subdomain[$x];
    $ip = `/usr/bin/dig $host +short A`;
    $mx = `/usr/bin/dig $host +short MX`;
}

如果您有时间,请查看PHP中array access上的文档。