2015-01-05 47 views
-1

我有一個看看這個解決方案 - PHP Find Coordinates between two pointsPHP得到4套座標之間的所有座標

我試過的代碼和它的工作。雖然代碼獲取了對角線的座標列表。

$p1 = array(
    'x' => 0, 
    'y' => 0 
); 

$p2 = array(
    'x' => 10, 
    'y' => 10 
); 

// Work out distances 
$pxd = $p2['x'] - $p1['x']; 
$pyd = $p2['y'] - $p1['y']; 

// Find out steps 
$steps = max($p1['x'], $p1['y'], $p2['x'], $p2['y']); 

$coords = array(); 

for ($i = 0; $i < $steps; ++ $i) { 
    $coords[] = array(
     'x' => round($p1['x'] += $pxd/$steps), 
     'y' => round($p1['y'] += $pyd/$steps) 
    ); 
} 

print_r($coords); 

在上面的代碼一個得到10座標即

Array ([0] => Array ([x] => 1 [y] => 1) [1] => Array ([x] => 2 [y] => 2) [2] => Array ([x] => 3 [y] => 3) [3] => Array ([x] => 4 [y] => 4) [4] => Array ([x] => 5 [y] => 5) [5] => Array ([x] => 6 [y] => 6) [6] => Array ([x] => 7 [y] => 7) [7] => Array ([x] => 8 [y] => 8) [8] => Array ([x] => 9 [y] => 9) [9] => Array ([x] => 10 [y] => 10)) 

上面是對角線。我想獲得100個座標,即(1,1),(1,2),(1,3),(1,4)......(7,10),(1,0),(1,1),(1,2),(1,3) (8,10),)(9,10),(10,10)。

我不知道如何數學去解決它。

回答

0

你需要兩個循環;一爲 'X' 軸,一爲 'Y' 軸

所以更多的東西一樣(未經測試):

for ($x = $p1['x']; $x < $p2['x']; ++ $x) { 
    for ($y = $p1['y']; $y < $p2['y']; ++ $y) { 
     $coords[] = array(
      'x' => round($x), 
      'y' => round($y) 
     ); 
    } 
} 
+0

謝謝。它工作 – Magicom

+0

這是一個愚蠢和平庸的問題,但我卡住了。而不是讓'print_r'如何回顯每個座標'x,y'而不是'Array([0] => Array([x] => 1 [y] => 1)'' – Magicom

0

你應該使用嵌套的for循環。

for($i=1;$i<=10;$i++){ 

    for($j=1;$j<=10;$j++){ 

    $coords[] = array('x'=>$i,'y'=>$j); 

    } 

}