首先,我不确定标题是否正确但这是我想要做的。我想使用从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);
}
答案 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上的文档。