Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP独立字符串_Php_String_Split_Yii2 - Fatal编程技术网

PHP独立字符串

PHP独立字符串,php,string,split,yii2,Php,String,Split,Yii2,我有一个包含128.82的字符串。我想在100和28.82中拆分/分离它们 var_dump(substr($kwh,0,3)); die(); 它给了我128 如何区分100和28.82 任何帮助都将不胜感激 注意:我之所以设置它,是因为我已经定义了楼板1-100、101-150等等。所以我需要根据板设置它们。板可能不同,因为它可能是1-50,51-100,100-150,等等。因此,我必须对128.82进行拆分,比如50对于1-50,50对于51-100,然后28.82对于

我有一个包含
128.82
的字符串。我想在
100
28.82
中拆分/分离它们

var_dump(substr($kwh,0,3));
        die();
它给了我
128

如何区分
100
28.82

任何帮助都将不胜感激

注意:我之所以设置它,是因为我已经定义了楼板<代码>1-100、101-150等等。所以我需要根据板设置它们。板可能不同,因为它可能是
1-50
51-100
100-150
,等等。因此,我必须对
128.82
进行拆分,比如
50
对于
1-50
50
对于
51-100
,然后
28.82
对于
101-150

$input = '128.82'; // we’re doing math here, so actually we’ll be working with numbers,
                   // but PHP will automatically cast here
$slabs = [50, 100, 150, 200];

$result = [];
$previous_slab = 0;

foreach($slabs as $slab) {
  // calculate distance between current and previous slab
  $slab_distance = $slab - $previous_slab;
  // if current remainder of input value is >= distance, add distance to result,
  // and subtract distance from remainder of input
  if( $input >= $slab_distance ) {
    $result[] = $slab_distance;
    $input -= $slab_distance;
  }
  // otherwise, add remainder as last item of result, and break out of the loop here
  else {
    $result[] = $input;
    break;
  }
  $previous_slab = $slab;
}

var_dump($result);
给定板的结果:

array (size=3)
  0 => int 50
  1 => int 50
  2 => float 28.82
[50,75,150,200]的结果:

array (size=3)
  0 => int 50
  1 => int 25
  2 => float 53.82

如果要将
128.82
拆分为
100
28.82
您可以这样做:

<?php
function calcSlabSize($size) {
    $slab = floor($size / 50)*50;
    return [$slab,$size-$slab];
}

print_r( calcSlabSize(128.82));

substr是一个字符串函数,您正在寻找的似乎是一个简单的减法,不是吗?不确定您的目标是什么?您是在寻找一种算法来处理各种数字,还是只针对这一特定的128.82寻找一种解决方案?因为这是基本的数学…您不能单独通过“拆分”来完成,因为
100
不作为输入字符串的一部分存在。这显然也涉及到一点“数学成分”。但是为了让我们能够给出一个正确的答案,你应该给出不止一个例子,分别是。更好地指定此处适用的条件/限制。将板的上边界放入数组-
[50、100、150,
]。然后在上面循环,并从输入值中减去当前板值(即当前板与上一个板之间的差值)。如果结果低于零,您知道是时候停止了。正如我在另一个问题中提到的,我有3分
slab\u start
slab\u end
,和
rate
。我如何在其中管理它们?这里不需要板的开始值,上面的数组只是板的结束。(所有这些都是在假设你的拍打从1开始,并且是连续的,并且顺序正确的情况下)到目前为止,在你的另一个问题中,速度应该在哪里/如何达到这一点还不清楚。每个板都有一个速度。每个兔子通常有两个耳朵。和那又怎么样?那样的利率会发生什么?如何将其纳入计算?费率用于根据单位计算账单。
Array ( [0] => 100 [1] => 28.82 )