2017-01-13 10 views
0

in String/Array wollen Ich habe ein Array wie diese $arr = array(2, -3, 6, 1);nur Elemente Wählen Sie

Und ich möchte nur die positiven Zahlen auswählen zu können, die anderen zwischen ihnen summieren.

Also habe ich diesen Code geschrieben, aber ich bin ein bisschen verloren, wie man die Elemente auswählt, die ich nur etwas mit ihnen machen möchte, wie sie zu summieren.

$sum = implode(",", $arr); 

    for($i = 0; $i <= strlen($sum); $i++) { 
    if($i <= 0) { 
    } else { 
     return explode(",", array_sum($i)); 
    } 
} 
} 
+0

Was meinst du mit "wählen Sie"? – GrumpyCrouton

+0

Verwenden Sie 'array_filter', keine Notwendigkeit, eine explizite Schleife zu verwenden: http://php.net/manual/en/function.array-filter.php –

+0

@GrumpyCrouton Ich habe den Titel bearbeitet. Entschuldigung, ich möchte nur das gewünschte Element im Array auswählen können. Und summiere die anderen zusammen. –

Antwort

4

Verwenden Sie array_fliter, um den Wert zu filtern, und array_sum, um das Array zu summieren.

array_sum(array_filter($array, function($v){return $v>0;}); 
+0

Vielen Dank für Ihre Antwort. Aber ich kann nicht herausfinden, wie das funktioniert. Ich habe $ arr = Array (2, -3, 6, 1); –

+0

Verwenden Sie $ arr als $ -Array im Code. –

0

Verwenden array_filter mit Callback-Funktion wie unten:

<?php 
    $arr = array(2, -3, 6, 1); 
    function positive($a){ 
     if($a > 0){ 
      return $a; 
     } 

    } 
    $newArr = array_sum(array_filter($arr, "positive")); 
    print_r($newArr); 
?> 
0

array_reduce Verwendung:

$arr = array(2, -3, 6, 1); 

$result = array_reduce($arr, function($c, $i) { return $i > 0 ? $c + $i : $c; }); 

echo $result;