2015-11-02 40 views
1

是存在的,如果我想要的代碼看起來像這樣如何從數組的某些元素有一個的foreach PHP

foreach ($a as $key=>$value) { 
    if (($value['someprop'] == 'some prop') || ($value['someprop'] == 'some other prop')) 
     array_splice($a, $key, 1); 

因爲數組鍵與array_splice

+0

能否請您重新制定你的問題,是什麼你想要做什麼? – Nirnae

+0

您將鍵和值分割爲'$ key => $ value'那麼爲什麼'$ value ['someprop']'?只是'$價值'還不夠? – Thamilan

+0

@VijayaSankarN它看起來不太整齊,不。也許它是一個數組數組? –

回答

1

使用一個for循環移位的方式,計算從數組結束回:

(這樣你就不會惹上麻煩與指數變化)

for($i = count($myArray); $i>0; $i--) 
{ 
    $value = $myArray[$i]; 
    if (($value['someprop'] == 'some prop') || ($value['someprop'] == 'some other prop')) 
     array_splice($myArray, $i-1, 1); 
} 
+1

我認爲索引是從count($ a)-1到0 – Herokiller

+0

@Herokiller對吧。現在修復了。 –

1

使用更優雅array_filter代替:

$a = [ 
    ['someprop' => 'some prop'], 
    ['someprop' => 'not some prop'], 
    ['someprop' => 'some other prop'], 
]; 

方法:

$filtered = array_filter($a, function($value) { 
    return !($value['someprop'] == 'some prop' || $value['someprop'] == 'some other prop'); 
}); 

的print_r($過濾):

Array 
(
    [1] => Array 
     (
      [someprop] => not some prop 
     ) 

) 

http://php.net/manual/en/function.array-filter.php

+0

也不錯,我想這只是用PHP開發時的那些「你需要知道的東西」之一。 –

相關問題