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 位小数的值的行。我怎么做?

4

1 回答 1

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
于 2012-11-10T19:18:32.933 回答