2016-05-02 6 views
0

私はarrayを持っています。正、負、ゼロの値を持っています。次に、配列の数で各グループを分けた正、負、配列の正数と負数を見つける-PHP

<?php 

$arr = ['-4','3','-9','0','4','1']; 
$countNum = count($arr); 
//print_r($countNum); 
foreach ($arr as $key => $value) { 
    if ($value<0) { 
     continue; 
    }elseif($value==0){ 
     continue; 
    }else{ 
     $result = $value/$countNum; 
     echo $result."</br>"; 
    } 
} 
?> 

出力は次のとおりです:count.Iは、道の下にしようとしている

0.5 
0.66666666666667 
0.16666666666667 

しかし、私はしたいと次のようになります。

for positive, 3/6=0.500000 
for negative, 2/6=0.333333 
for zero, 1/6=0.166667 
+0

あなたはその出力をどこから取得しますか? – Loko

+0

でしたか? 1)0.5 =正の場合、3/6 = 0.500000 2)0.66666666666667 =負の場合、2/6 = 0.333333 3)0.16666666666667 = 0の場合、1/6 = 0.166667 ?? –

答えて

1

このコードを試してください。

<?php 
$zero = '0'; 
$positive = '0'; 
$negative = '0'; 
$arr = array('-4','3','-9','0','4','1'); 
$total = count($arr); 
foreach ($arr as $num){ 
    if ($num > '0'){ 
    $positive++; 
    } else if ($num < '0'){ 
    $negative++; 
    } else { 
     $zero++; 
    } 
} 
echo "Positive: ".$positive/$total; 
echo '<br />'; 
echo "Negative: ".$negative/$total; 
echo '<br />'; 
echo "Zero: ".$zero/$total; 
?> 
+0

小数点以下を6に制限したい場合は、 'number_format($ positive/$ total、6)' –

+0

'$ positive ++'を使用するのはなぜですか? –

+0

@ChoncholMahmud '$ positive = $ positive + 1'の略です – Brewal

2
<?php 

$arr = ['-4','3','-9','0','4','1']; 
$countNum = count($arr); 
$neg_count = $pos_count = $zero_count = 0; 
//print_r($countNum); 
foreach ($arr as $key => $value) { 
    if ($value<0) { 
     $neg_count++; 
    }elseif($value==0){ 
     $zero_count++; 
    }else{ 
     $pos_count++; 
    } 
} 
echo 'for Negative : '.$neg_count/$countNum; 
echo '<br>for Positive : '.$pos_count/$countNum; 
echo '<br>for Zero : '.$zero_count/$countNum; 
0

あなたは出力値をフォーマットしたい場合は、number_format関数を使用します。ここnumber_format($positive/$total, 6, '.', '');

0

これを行うにはわずかに異なる方法である:

$arr = ['-4','3','-9','0','4','1']; 
$countNum = count($arr); 

// Positives = ['3', '4', '1'] 
$positives = array_filter($arr, function ($v) { 
    return $v > 0; 
}); 
// 3/6 = 0.5 
echo count($positives)/$countNum; 

// Zeros = ['0'] 
$zeros = array_filter($arr, function ($v) { 
    return $v == 0; 
}); 
// 1/6 = 0.1666666667 
echo count($zeros)/$countNum; 

// Negatives = ['-4', '-9'] 
$negatives = array_filter($arr, function ($v) { 
    return $v < 0; 
}); 
// 2/6 = 0.333333333 
echo count($negatives)/$countNum; 
0
<?php 

     $arr  = ['-4','3','-9','0','4','1']; 
     $countNum = count($arr); 
     $positives = $negatives = $zeros = 0; 
     $arrValues = array(
      "zeros"  => 0, 
      "positives" => 0, 
      "negatives" => 0, 
     ); 


     foreach ($arr as $key => $value) { 
      if ($value == 0) {   //ZEROS 
       $zeros++; 
       $arrValues['zeros']  = $zeros; 
      }else if ($value < 0) {  //NEGATIVES 
       $negatives++; 
       $arrValues['negatives'] = $negatives; 
      }else{      //POSITIVES 
       $positives++; 
       $arrValues['positives'] = $positives; 
      } 
     } 

     $arrValues["positives"] = doubleval($arrValues["positives"])/$countNum; 
     $arrValues["negatives"] = doubleval($arrValues["negatives"])/$countNum; 
     $arrValues["zeros"]  = doubleval($arrValues["zeros"])/$countNum; 

     var_dump($arrValues); 
0

、正、負、ゼロ値の名前付きキーを使用してアレイを使用して短い溶液:

$arr = ['-4','3','-9','0','4','1']; 
$total = count($arr); 
$numbers = ["negatives" => 0, "positives" => 0, "zeros" => 0]; 

foreach ($arr as $v) { 
    $v = (int) $v; 
    $numbers[($v == 0)? 'zeros' : (($v < 0)? 'negatives': 'positives')]++; 
} 

echo "for positive: ". "{$numbers["positives"]}/$total=" .$numbers["positives"]/$total .PHP_EOL; 
echo "for negative: ". "{$numbers["negatives"]}/$total=" .$numbers["negatives"]/$total .PHP_EOL; 
echo "for zero: ". "{$numbers["zeros"]}/$total=" .$numbers["zeros"]/$total .PHP_EOL; 

出力:

for positive: 3/6=0.5 
for negative: 2/6=0.33333333333333 
for zero: 1/6=0.16666666666667 
関連する問題