2011-03-30 73 views
1

我有一個數組,它看起來像如何刪除二維數組(PHP)中的值?

 $cclArray[0]['url']='test.html'; 
     $cclArray[0]['entity_id']=9; 
     $cclArray[1]['url']='test1.html'; 
     $cclArray[1]['entity_id']=10; 
     $cclArray[2]['url']='test2.html'; 
     $cclArray[2]['entity_id']=11; 

,如果我想刪除特定的陣列,例如,如果我想刪除與'url'='test1.html'數組元素..我該怎麼辦呢?

非常感謝您的幫助。

回答

2
foreach ($cclArray as $k => $array) { 
    if ($array['url'] == 'test1.html') { 
     unset($cclArray[$k]); 
    } 
} 
+0

Thankyou ...我明白了...... – balanv 2011-03-30 12:15:41

0
foreach($cclArray as $key=>$val){ 
    if($val['url'] == 'test1.html'){ 
    unset($cclArray[$key]); 
    } 
} 

我認爲就是這樣。

+0

不會的作品。 – hsz 2011-03-30 11:03:43

+0

爲什麼,你能告訴我嗎? – Headshota 2011-03-30 11:07:38

+0

'unset($ val [$ key])' - key是'$ cclArray'(0,1,2)中鍵的數值。你正在取消發佈'$ val [0]' - 而不是'$ cclArray [0]' – hsz 2011-03-30 11:15:13

0
for ($i=0;$i<count($cclArray);$i++) 
    if($cclArray[$i]['url']=='test.html') unset($cclArray[$i]['url']) 
+0

請不要在'for'條件中給出'count()'的例子。 – kapa 2011-03-30 11:29:22

+0

爲什麼不呢?你認爲,這種情況的正確部分是在每次迭代中計算的? – heximal 2011-03-30 11:33:13

+1

糾正我,如果我錯了,我總是樂於刷新我的知識。 http://www.codeforest.net/php-mythbusters-count-inside-for-loop-is-slow – kapa 2011-03-30 11:41:10

0
for($i=0; $i<count($cclArray); $i++){ 
    if('test1.html' === $cclArray[$i]['url']){ 
     array_splice($cclArray, $i, 1); 
    } 
} 

這是更好,但請記住,未設置()不會刪除它只是設置爲null實際的元素。如果你希望它完全沒有了,那麼在unset()之後你也應該這樣做:$ cclArray = array_filter($ cclArray);

或者你也可以爲了完成刪除數組元素做到這一點,而不是僅僅取消設置它

for($i=0; $i<count($cclArray); $i++){ 
if('test1.html' === $cclArray[$i]['url']){ 
array_splice($cclArray, $i, 1); 
} 

}

+0

不確定你的意思。在foreach中,$ k是主數組的$ key,$ array是嵌套數組的值。 – Dmitri 2011-03-30 11:13:33

+0

你試過了嗎?我做了,我的array_splice解決方案按預期工作。自己嘗試一下 - 它不會從副本中徹底刪除實際的元素。 – Dmitri 2011-03-30 11:18:35

+0

對不起,我誤解你的代碼。它是正確的=) – Headshota 2011-03-30 11:21:33

1

,如果你讓你的陣列這樣

$cclArray['test.html'] = 9; 
    $cclArray['test1.html'] = 10; 
    $cclArray['test2.html'] = 11; 

它會只需要刪除即可

$url = 'test.html'; 
unset($cclArray[$url]); 
2

如果你正在使用PHP> 5.3,你可以這樣做只是這樣的:

$cclArray = array_filter($cclArray, function ($var) { 
    return $var['url'] != 'test1.html'; 
}); 
+1

而對於PHP <5.3,你可以使用'create_function()'來做同樣的事情。 – 2011-03-30 13:16:56