我想獲取一個包含x/y座標和方向信息(跨越或向下)的數據數組,並將鏈接共享單元格與增加的數字。這是一個縱橫字謎。原來這裏是數組:php標記網格交叉點x/y座標
Array
(
[0] => Array
(
[id] => 1
[puzzle_id] => 1
[word] => hello
[hint] =>
[direction] => across
[grid_x] => 3
[grid_y] => 1
)
[1] => Array
(
[id] => 2
[puzzle_id] => 1
[word] => loot
[hint] =>
[direction] => down
[grid_x] => 5
[grid_y] => 1
)
[2] => Array
(
[id] => 3
[puzzle_id] => 1
[word] => hellotest
[hint] =>
[direction] => down
[grid_x] => 3
[grid_y] => 1
)
[3] => Array
(
[id] => 4
[puzzle_id] => 1
[word] => looking
[hint] =>
[direction] => across
[grid_x] => 3
[grid_y] => 3
)
)
我想1添加一個新的關鍵,所謂「民」每個條目,將在1開始,增量,但棘手的問題是我需要的對面,向下共享相同的數字,如果他們共享一個起始單元格(共享grid_x和grid_y)。這是我現在的代碼,但它不會產生我正在尋找的正確數字。
$puzzle_data2 = $puzzle_data;
$across_counter = 1;
foreach($puzzle_data as $rkey=>$row)
{
if($row['direction'] == 'across')
{
$puzzle_data[$rkey]['num'] = $across_counter++;
foreach($puzzle_data2 as $rkey2=>$row2)
{
if($row['direction'] == 'down')
{
if($row['grid_x'] == $row2['grid_x'] && $row['grid_y'] == $row2['grid_y'])
{
$puzzle_data[$rkey2]['num'] = $across_counter;
break;
}
}
}
}
}
foreach($puzzle_data as $rkey=>$row)
{
if(!isset($row['num']))
{
$puzzle_data[$rkey]['num'] = $across_counter++;
}
}
我最終得到這樣的結果:
Array
(
[0] => Array
(
[id] => 1
[puzzle_id] => 1
[word] => hello
[hint] =>
[direction] => across
[grid_x] => 3
[grid_y] => 1
[num] => 1
)
[1] => Array
(
[id] => 2
[puzzle_id] => 1
[word] => loot
[hint] =>
[direction] => down
[grid_x] => 5
[grid_y] => 1
[num] => 3
)
[2] => Array
(
[id] => 3
[puzzle_id] => 1
[word] => hellotest
[hint] =>
[direction] => down
[grid_x] => 3
[grid_y] => 1
[num] => 4
)
[3] => Array
(
[id] => 4
[puzzle_id] => 1
[word] => looking
[hint] =>
[direction] => across
[grid_x] => 3
[grid_y] => 3
[num] => 2
)
)
我找的ID 1和3都爲 「1」。如果你想到一個縱橫字謎,其中一個橫向和縱向共享相同的起始單元格,並在橫向和縱向鍵中標記相同的數字,這就是我試圖用我的數據集來完成的任務。
謝謝你的時間。
您的數據排序第一,使用行#和col#,那麼你的腳本將工作 – Waygood 2013-02-27 10:10:55