Laravel:获取数组中每个值的百分比

时间:2018-02-01 16:06:19

标签: arrays laravel percentage

我有一个带数字的两个数组变量。我需要第三个也将是一个数组,但前两个数组的百分比。例如:

array:15 [▼
  0 => 256
  1 => 312
  2 => 114
]

array:15 [▼
      0 => 100
      1 => 211
      2 => 12
    ]

所以我需要一个变量看起来像这样:

array:15 [▼
          0 => 39.0
          1 => 67.6
          2 => 10.5
        ]

我得到的前两个变量是:

$settlements = Settlement::where('town_id', Auth::user()->town_id)
  ->withCount('members')
  ->where('reon_id', '1')
  ->get();

foreach ($settlements as $settlement) {
  $sett[] = $settlement->members->count();
}

$sett_members = Settlement::where('town_id', Auth::user()->town_id)
  ->withCount('members')
  ->where('reon_id', '1')
  ->get();

foreach ($sett_members as $sett_member) {
  $sett_m[] = $sett_member->members->where('cipher_id', '0')->count();
}

但是当我尝试像这样计算百分比时:

$percentage = round(($sett_m / $sett) * 100,1);

它显示错误不支持的操作数类型

2 个答案:

答案 0 :(得分:1)

您可以loop通过您的数组,使用calculation元素执行same index并存储在new数组中。

$percentage = array();
for($i=0;$i<count($sett_m);$i++) {
    if($sett[$i]!=0){
    $percentage[$i] = round(($sett_m[$i] / $sett[$i]) * 100, 1);
   }
}

print_r($percentage);

答案 1 :(得分:1)

根据php中可用的数组运算符的文档

http://php.net/manual/en/language.operators.array.php

你只能在数组中使用以下运算符,

  1. 联盟
  2. 平等
  3. 身份
  4. 不等式
  5. 非身份
  6. 对于你的情况,你可以这样做,

    如果您有$arr1$arr2等数组,那么

    $arr1 = array(0 => 256, 1 => 312,2 => 114);
    
    $arr2 =  array(0 => 100,1 => 211,2 => 12);
    
    $calculator = function($first, $second) { 
    
                        if($second == 0)
                             return 0;
                        else 
                             return round($first/$second * 100,2); 
                   };
    
    $percentage = array_map($calculator, $arr2, $arr1);
    

    在这里,您将得到$percentage数组作为所需结果。