2013-09-01 52 views
0

元素,我有以下嵌套數組:遞歸刪除嵌套數組尋找一個特定的值

Array ( 
    [0] => Array ([0] => [1] => 51.212342,6.7834665) 
    [1] => Array ([0] => 28.8.2013 01:14:06 [1] => 51.2123822,6.7834572) 
    [2] => Array ([0] => 28.8.2013 15:11:53 [1] => 0,0) 
    [3] => Array ([0] => 28.8.2013 15:12:16 [1] => 0,0) 
    [4] => Array ([0] => 28.8.2013 15:36:06 [1] => 0,0) 
    [5] => Array ([0] => 28.8.2013 15:40:13 [1] => 41.117143,16.871871) 
    [6] => Array ([0] => 28.8.2013 15:40:14 [1] => 0,0) 
    [7] => Array ([0] => 28.8.2013 16:03:13 [1] => 0,0) 
    [8] => Array ([0] => 28.8.2013 16:11:19 [1] => 40.8205315914286,16.5500314957143) 
    [9] => Array ([0] => 28.8.2013 16:11:20 [1] => 0,0) 
    [10] => Array ([0] => 28.8.2013 16:11:40 [1] => 40.8205315914286,16.5500314957143) 
    [11] => Array ([0] => 28.8.2013 18:11:33 [1] => 45.4304359,12.3290189) 
    [12] => Array ([0] => 28.8.2013 18:11:34 [1] => 0,0) 
    [13] => Array ([0] => 28.8.2013 18:11:54 [1] => 45.4304456,12.3289609) 
    [14] => Array ([0] => 28.8.2013 18:11:55 [1] => 0,0) 
    [15] => Array ([0] => 29.8.2013 10:07:21 [1] => 51.212394,6.7834843) 
      ... 
); 

在這裏,我需要刪除所有具有「0,0」作爲自己[$n][1]價值的元素。我試過這個,但是一些「0,0」仍然存在。爲什麼?

for ($i = 0; $i < sizeof($locations); $i++) { 
    $key = array_search('0,0', $locations[$i]); 
    if ($key !== false) { 
     unset($locations[$i]); 
     $locations = array_values($locations); 
    } 
} 

Array ( 
    [0] => Array ([0] => [1] => 51.212342,6.7834665) 
    [1] => Array ([0] => 28.8.2013 01:14:06 [1] => 51.2123822,6.7834572) 
    [2] => Array ([0] => 28.8.2013 15:12:16 [1] => 0,0) 
    [3] => Array ([0] => 28.8.2013 15:40:13 [1] => 41.117143,16.871871) 
    [4] => Array ([0] => 28.8.2013 16:03:13 [1] => 0,0) 
    [5] => Array ([0] => 28.8.2013 16:11:19 [1] => 40.8205315914286,16.5500314957143) 
    [6] => Array ([0] => 28.8.2013 16:11:40 [1] => 40.8205315914286,16.5500314957143) 
    [7] => Array ([0] => 28.8.2013 18:11:33 [1] => 45.4304359,12.3290189) 
    [8] => Array ([0] => 28.8.2013 18:11:54 [1] => 45.4304456,12.3289609) 
    [9] => Array ([0] => 29.8.2013 10:07:21 [1] => 51.212394,6.7834843) 
    [10] => Array ([0] => 29.8.2013 10:07:56 [1] => 51.2123948,6.7834622) 
    [11] => Array ([0] => 29.8.2013 11:57:45 [1] => 51.21244537,6.78355515) 
    [12] => Array ([0] => 29.8.2013 11:58:27 [1] => 51.21238401,6.78352698) 
    [13] => Array ([0] => 29.8.2013 12:01:17 [1] => 51.2124044633333,6.78353637) 
    [14] => Array ([0] => 29.8.2013 12:11:18 [1] => 51.2124044633333,0.783536) 
    [15] => Array ([0] => 29.8.2013 12:12:39 [1] => 51.212416045,6.783523) 
    ... 
); 

回答

1

一個與你的代碼的問題是,的sizeof($位置)改變每次你做一個沒有設置時間。因此,無論何時您有兩個連續的[$ n] [1]具有「0,0」,您都無法檢測到。另外你的代碼是不是在看剛剛[$ n]的[1],它看着所有索引[$ N] []

使用下面的代碼:

$count = count($locations); 
for ($i = 0; $i < $count; $i++) { 
    if ($locations[$i][1] == "0,0") { 
     unset($locations[$index]); 
    } 
} 

$locations = array_values($locations); 
1
foreach ($locations as $index => $row) { 
    if ($locations[$index][1] == "0,0") unset($locations[$index]); 
} 
$locations = array_values($locations); 
+0

沒有成功:\t陣列( \t \t [0] => Array([0] => [1] => 51.212342,6.7834665) \t \t [1] => Array([0] => 28.8.2013 01:14:06 [1] = > 51.2123822,6.7834572) \t \t [2] => Array([0] => 28.8.2013 15:11:53 [1] => 0,0) \t \t [3] => Array([ 0] => 28.8.2013 15:12:16 [1] => 0,0) \t \t ... \t); – lorussian

+0

更新了我的答案,應該立即工作。 – hofimax