2011-03-30 27 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