2014-09-12 31 views
0

首先,我不確定標題是否正確,但這是我想要做的。我想使用從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); 

} 

回答

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

雖然,我懷疑$主機應該是一個字符串,而不是一個數組:

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`; 
} 

當你有一個時刻,R在PHP中查看關於array access的文檔。