2014-10-07 28 views
-1

這是我的陣列,我想從排列的最小長度除去指數是3個字符我想從陣列具有最小長度除去指數3個字符

Array 
(
    [0] => #FCBayern 
    [1] => won 
    [2] => a 
    [3] => Championsleague 
    [4] => match 
    [5] => with 
    [6] => 2 
    [7] => goals 
    [8] => difference 
) 

我想出來把這樣

Array 
(
[0] => #FCBayern 
[1] => Championsleague 
[2] => match 
[3] => with 
[4] => goals 
[5] => difference 

回答

5
foreach($array as $key => $val) { 
    if(strlen($val) <= 3) 
     unset($array[$key]); 
} 

下面會做你的需要。

這裏是一個簡單的解釋。

  1. 用foreach循環迭代循環。
  2. 使用條件語句檢查長度是否小於或等於3.
  3. 如果條件評估結果爲true,請從數組中刪除索引。
+0

請注意,您可能需要使用['mb_strlen'(http://www.php.net/mb_strlen)如果你使用UTF-8字符。演示:['var_dump(strlen('æ')); // int(2)'](http://3v4l.org/TCP2Q) – h2ooooooo 2014-10-07 06:09:05

+0

@ h2ooooooo當然。 – 2014-10-07 06:10:19

0

試試這個,它會產生興田同出把你正在尋找

$array=Array (0 => '#FCBayern', 1 => 'won', 
    2 => 'a', 3 => 'Championsleague', 4 => 'match', 
    5 => 'with', 6 => '2', 7 => 'goals', 8 => 'difference'); 

foreach($array as $newarray) 
{ 
    if(strlen($newarray)>2) 
    { 
     $myarray[]=$newarray; 
    } 
} 
echo '<pre>'; 
print_r($myarray); 
'<pre>'; 
0

有專爲這種類型的任務的功能,略高於使用腳本循環,因爲它的處理速度更快在裝配層面。

的函數被調用:array_filer()

至於用這個方法您的問題的解決方案如下。您可以隨意命名該函數,它只是返回一個布爾值 - true以保留該項或false以將其刪除。

$array1 = Array (
    '#FCBayern', 
    'won', 
    'a', 
    'Championsleague', 
    'match', 
    'with', 
    '2', 
    'goals', 
    'difference' 
); 

$array1 = array_filter($array1, "myfilter"); 
var_export ($array1); 

function myfilter($item) { 
    return (strlen($item) > 3 ? true : false); 
} 
0
<?php 
$sample = Array(0 => '#FCBayern',1 => 'won',2 => 'a',3 => 'Championsleague',4 => 'match',5 => 'with',6 => 2,7 => 'goals',8 => 'difference'); 

array_walk_recursive($sample,'makeProper'); 
$sample1 = array_filter($sample); 
echo "<pre>"; 
print_r($sample1); 
function makeProper(&$item, $key){ 
    if(strlen($item) > 3){ 
     $item = $item; 
    } else { 
     $item = ''; 
    } 
} 
?> 
相關問題