2011-06-02 61 views
1

如果第一個字符是某個字母,在這種情況下是字母D,我試圖找到解除元素的方法...我不確定是否有數組函數做一些這樣的事情,或者如果一個替代品會做的伎倆?基於第一個字符取消設置數組元素

[0] => Aaron [1] => Bob [2] => Carl [3] => Dale [4] => Devin [5] => Dylan 

取消設置,與字母 「d」 開頭的話會導致:

[0] => Aaron [1] => Bob [2] => Carl 
+0

您使用的是哪個版本的PHP? – GWW 2011-06-02 18:30:44

+0

PHP版本5.3.5 – 2011-06-02 18:39:20

+0

很酷,你可以使用閉包,然後 – GWW 2011-06-02 18:42:57

回答

1

您可以使用array_filter功能:

function filter_firstchar($var){ 
    return $var[0] != 'D'; 
} 

$result = array_filter($arr, 'filter_firstchar'); 

如果信你將被過濾將會改變,你可以建立一個非常基本的過濾類:

class Filter_FirstChar { 
    private $char; 
    function __construct($char){ 
     $this->char = $char; 
    } 
    function filter($var){ 
     return $var[0] != $this->char; 
    } 
} 

$result = array_filter($arr, array(new Filter_FirstChar('A'), 'filter')); 
+0

你需要使用'!='「如果回調函數返回true,則輸入的當前值返回結果數組」 – GWW 2011-06-02 18:34:14

+0

@GWW:良好的調用!我太快地閱讀了這個問題,並認爲他想保留以'D'開頭的條目。我的錯。 – brianreavis 2011-06-02 18:36:23

+0

我收到意想不到的T_STRING,期待班上第2行的T_FUNCTION? – 2011-06-02 18:42:51

1
$i = 0; 
$n = count($array); 
while ($i < $n) { 
    if ($array[$i][0] == 'D') 
    unset($array[$i]); 
    ++$i; 
} 
1
foreach($array as $key => $name) 
{ 
    if(substr($name,0,1) == "D") 
    { 
     unset($array[$key]); 
    } 
} 

是一個方法,可以很好地幫助你。

3

手動循環已完成任務。但作爲單線程選項:

$array = preg_grep('/^(?!D)/', $array); 
相關問題