如何使用php对带有子数组的数组中的一个值进行乘法和舍入?

如何使用php对带有子数组的数组中的一个值进行乘法和舍入?,php,arrays,key-value,rounding,multiplication,Php,Arrays,Key Value,Rounding,Multiplication,如何使用PHP迭代和修改数组的一个值? 我有以下代码: <?php // That's the output that I receive from an Java program. $freeTextOutput = " 42631673:0.5585319618827993; 39830245:0.4512246398531659; 9543481:0.4486841314390102; 45349208:

如何使用PHP迭代和修改数组的一个值? 我有以下代码:

<?php
    // That's the output that I receive from an Java program.
    $freeTextOutput = "
        42631673:0.5585319618827993;
        39830245:0.4512246398531659;
        9543481:0.4486841314390102;
        45349208:0.4478453543900579;
        3543584:0.3855027425164259;
        29266117:0.37859229789438587;
        25948743:0.3762908775963289;
        44167053:0.3756673145038688;
        6355749:0.3702819135046792;
        6322651:0.36883803217397765;";

    // Transform output into an array.
    $freeTextOutputArray = explode(";", $freeTextOutput, -1);
然后我分解它,所以我有一个带有子数组的数组:

    // Transform values of the first array into subarrays.
    foreach ($freeTextOutputArray as $value) {
        $freeTextOutputArrayWithSubArrays[] = explode(":", $value);
    }
结果是:

Array (
    [0] => Array (
        [0] => 42631673 [1] => 0.5585319618827993
    )
    [1] => Array (
        [0] => 39830245 [1] => 0.4512246398531659
    )
    etc...
    [9] => Array (
        [0] => 6322651 [1] => 0.36883803217397765
    )
) 
现在我想把子数组的key[1]的值乘以1000,然后四舍五入。我就这样试过:

    foreach ($freeTextOutputArrayWithSubArrays as $value) {
        foreach ($value as $wert) {
            $roundedIndex[] = round($wert * 1000);
        }
    }
但后来,所有的东西都被放大了,子阵列也消失了:

Array (
    [0] => 42631673000
    [1] => 559
    [2] => 39830245000
    [3] => 451
    etc...
    [18] => 6322651000
    [19] => 369
)
那么我要做什么才能得到下面的结果呢

Array (
    [0] => Array (
        [0] => 42631673 [1] => 558
    )
    [1] => Array (
        [0] => 39830245 [1] => 451
    )
    etc...
    [9] => Array (
        [0] => 6322651 [1] => 368
    )
)
提前谢谢你

   foreach ($freeTextOutputArrayWithSubArrays as $value) {
        $roundedIndex[] = array($value[0],round($value[1] * 1000));
    }
结果是在var_dump($roundedIndex)之后


感谢您提供的解决方案,它非常完美。但我不明白为什么“内部”foreach不起作用。我想我应该用它来迭代子数组的值,但是你证明了这是没有必要的。
   foreach ($freeTextOutputArrayWithSubArrays as $value) {
        $roundedIndex[] = array($value[0],round($value[1] * 1000));
    }
array
  0 => 
    array
      0 => string '

        42631673' (length=18)
      1 => float 559
  1 => 
    array
      0 => string '

        39830245' (length=18)
      1 => float 451
  2 => 
    array
      0 => string '

        9543481' (length=17)
      1 => float 449
  3 => 
    array
      0 => string '

        45349208' (length=18)
      1 => float 448
  4 => 
    array
      0 => string '

        3543584' (length=17)
      1 => float 386
<?php
// That's the output that I receive from an Java program.
$freeTextOutput = "
    42631673:0.5585319618827993;
    39830245:0.4512246398531659;
    9543481:0.4486841314390102;
    45349208:0.4478453543900579;
    3543584:0.3855027425164259;
    29266117:0.37859229789438587;
    25948743:0.3762908775963289;
    44167053:0.3756673145038688;
    6355749:0.3702819135046792;
    6322651:0.36883803217397765;";

// Transform output into an array.
$freeTextOutputArray = explode(";", $freeTextOutput, -1);
foreach ($freeTextOutputArray as $value) {
    $freeTextOutputArrayWithSubArrays[] = explode(":", $value);
}

foreach ($freeTextOutputArrayWithSubArrays as $key => $value) {
    $freeTextOutputArrayWithSubArrays[$key][1] = round($freeTextOutputArrayWithSubArrays[$key][1] * 1000);
}

print_r($freeTextOutputArrayWithSubArrays);