[英]Find highest number in array and work out percentage of the rest
好的,所以我有一個具有此結構的數組。
[0] => stdClass Object
(
[questionID] => 588
[count] => 2
[answer] => extremely-likely
)
[1] => stdClass Object
(
[questionID] => 588
[count] => 2
[answer] => extremely-unlikely
)
[2] => stdClass Object
(
[questionID] => 588
[count] => 1
[answer] => likely
)
[3] => stdClass Object
(
[questionID] => 588
[count] => 1
[answer] => neither
)
[4] => stdClass Object
(
[questionID] => 588
[count] => 1
[answer] => unsure
)
好的,所以基本上我首先要從此數組中找到最高的數字(計數)。
因此在上面的示例中為2。
現在保存了該最高數字,我想算出其余數字中2(最高數字)的百分比。
因此,從我上面的數組中,[2]將是最高數字的50%。
現在,到目前為止,我的工作如下所示:
private function getFFT($region){
$fft = Question::getFFTCount($this->hw->id);
$numbers = [];
foreach($fft as $answer){
$numbers[] = $answer->count;
}
$findHighest = array_keys($numbers,max($numbers));
return $findHighest;
}
現在,當我print_r($ findHighest)我得到以下內容。
Array
(
[0] => 0
[1] => 1
)
有誰知道我怎么能做到這一點?
如果只跟蹤最高值,則可以節省自己在$ numbers數組中存儲值的成本/內存。
private function getFFT(){
$fft = Question::getFFTCount($this->hw->id);
foreach($fft as $answer){
if (empty($findHighest) || $answer->count > $highest) {
$highest = $answer->count;
}
}
return $highest;
}
然后,一旦您擁有$ highest的價值,只需將計數除以$ highest。 如果您需要此方法來返回每個百分比的數組而不是最大值的值,則可以執行以下操作:
private function getFFT(){
$fft = Question::getFFTCount($this->hw->id);
foreach($fft as $answer) {
if (empty($findHighest) || $answer->count > $highest) {
$highest = $answer->count;
}
}
$numnbers = [];
foreach($fft as $answer) {
$numbers[] = $answer->count / $highest;
}
return $numbers;
}
另外,您可能不需要傳遞$ region,因為您沒有在函數中的任何地方使用它。
private function getFFT($region){
$fft = Question::getFFTCount($this->hw->id);
$max=0;
$count=0;
foreach($fft as $answer){
if($answer->count> $max)
{
$max=$answer->count;
$count=1;
}
else if($answer->count== $max)
$count++;
}
$ans = $count/count($fft);
$ans=$ans*100;
return $ans;
}
我不知道我是否正確理解了您的問題,但這是我想到的:
$numbers = [2, 2, 1, 1, 1];
$countValues = array_count_values($numbers);
$highestNumber = max($numbers);
$frequencyOfHighestNumber = $countValues[$highestNumber];
$percentage = 1 / $frequencyOfHighestNumber;
print $percentage;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.