2012-11-10 74 views
0

我有一個數值塊。刪除數組中有兩個以上小數位的值

$value = array(
       array(3075,15,461.25,16,535.05), 
       array(3075,15,461.25808,16,535.05),//to be removed 
       array(3075,15,461.2,16,535.05234)//to be removed 
      ); 

我需要刪除值超過2位小數的行。我怎麼做?

回答

1

可以使用strlen(substr(strrchr($x, "."), 1))計數小數和array_filter與多於2位小數

$value = array(
     array(3075,15,461.25,16,535.05), 
     array(3075,15,461.25808,16,535.05),//to be removed 
     array(3075,15,461.2,16,535.05234)//to be removed 
); 

$value = array_filter($value, 
    function ($v) { 
     foreach ($v as $x) { 
      if (strlen(substr(strrchr($x, "."), 1)) > 2) 
       return false; 
     } 
     return true; 
    }); 

var_dump($value); 

輸出

array (size=1) 
    0 => 
    array (size=5) 
     0 => int 3075 
     1 => int 15 
     2 => float 461.25 
     3 => int 16 
     4 => float 535.05 
+0

除去任何數組值作爲'strrchr(461.25)'導致'0.25 '你可以直接拿出結果的'strlen'。所以'if(strlen(strrchr($ x,「。」))> 3)'將起作用。 –

+0

@WouterH是的,它會。有沒有一種方法可以捕捉老鼠 – Baba

+0

,爲什麼在不需要時會用'substr()'?爲了減慢它的一點點? ;) –