mistralys / column-widths-calculator
PHP列宽度计算工具。
2.0.0
2022-06-09 14:09 UTC
Requires
- mistralys/application-utils: >=1.1
Requires (Dev)
- phpstan/phpstan: >=1.7
- phpunit/phpunit: >=9.5
README
列宽度计算器
这是一个小型工具,可用于将任意数值转换为列宽度。给定一列名称和值的列表,它将智能地将值转换为百分比,并为空列填充有意义的值。
特性
- 用有意义的值填充空值
- 使用比例计算将任何值转换为百分比
- 确保总宽度始终精确匹配100%
安装
使用composer,只需require该包。
通过命令行
composer require mistralys/column-widths-calculator
通过composer.json
"require" :
{
"mistralys/column-widths-calculator": "^1.0"
}
使用方法
使用工厂方法实例化计算器
$columns = array( 'Col1' => 20, 'Col2' => 0, 'Col3' => 40 ); $calc = Calculator::create($columns); $converted = $calc->getValues();
这将返回一个具有相同键的数组,并填充缺失的列值
array( 'Col1' => 20, 'Col2' => 40, 'Col3' => 40 );
整数和浮点数之间的切换
默认情况下,计算器将生成整数值,即使所有内部计算都是基于浮点数以保持精度。这可以被关闭以检索浮点值
$calc = Calculator::create($columns); $calc->setFloatValues();
在这种情况下,根本不会进行四舍五入 - 您将必须手动处理任何希望应用的四舍五入。
处理最小宽度
当留下列以自动填充时,可能不足以填充列的宽度。考虑以下列配置
Col1 = 80
Col2 = 20
Col3 = 0
默认情况下,计算器将保证每个列至少有宽度1
。因此,列表将调整如下,以便第三列可以具有宽度
Col1 = 79
Col2 = 20
Col3 = 1
多余的部分将按照比例从所有非空列中减去(不会低于最小宽度)。
设置最小大小
最小大小可以设置如下
$calc = Calculator::create($columns); $calc->setMinWidth(20);
这将确保所有列至少有20%的大小。
示例
Col1 = 80
Col2 = 20
Col3 = 0
将给出以下结果
Col1 = 60
Col2 = 20
Col3 = 20
注意:最小大小的最大可能值取决于列的数量。例如,尝试将最小大小设置为3列的40%,将抛出异常(40 x 3大于100)。
任意编号
计算器可以与任何数制一起使用,并按比例转换值。
考虑以下值
Col1 = 1400
Col2 = 900
Col3 = 700
这将转换为以下值
Col1 = 38
Col2 = 33
Col3 = 30
= 100%
缺失值
只要有一个以上的列有值,缺失的值将根据现有值的平均值填充,以获得真实的结果。
例如,值
Col1 = 1400
Col2 = 900
Col3 = 0
Col4 = 0
将转换为以下
Col1 = 30
Col2 = 19
Col3 = 25
Col4 = 26
= 100%
更改目标值
默认情况下,计算器假定您想要使用百分比,并将目标值锁定为100。但是,可以调整此值
$calc = Calculator::create($columns); $calc->setMaxTotal(1000);
在上面的示例中,列宽度将计算为达到总数1000,而不是默认的100。
转换为绝对像素值
为了方便起见,getPixelValues()
方法可以将列百分比转换为绝对像素值,给定最大目标宽度。
以下示例将列宽度转换为达到宽度600px
$cols = array( 'Col1' => 40, 'Col2' => 40, 'Col3' => 20 ); $calc = Calculator::create($columns); $pixelWidths = $calc->getPixelValues(600);
结果宽度将是
Col1 = 207
Col2 = 207
Col3 = 186
= 600