php
- Details
Will man überprüfen ob ein Wert/String in einem Array vorhanden ist, ist die einfachste Methode in_array. z.B.:
$needle = 1; $haystack = array(1, 2, 3); if (in_array($needle, $haystack)) { echo 'ok'; } // Ausgabe: ok
Obwohl in_array auch mit Arrays als needle funktioniert, liefert dieses Beispiel keine Ausgabe:
$needle = array(1,2); $haystack = array(1, 2, 3); if (in_array($needle, $haystack)) { echo 'ok'; }
Denn es wird in dem haystack-Array nach einem Array mit den gleichen Inhalten und nicht nach den einzelnen Werten des needle-Arrays gescucht.
Will man das überprüfen funktioniert das mit array_intersect so:
$needle = array(1,2); $haystack = array(1, 2, 3); if (array_intersect($needle, $haystack)) { echo 'ok'; } // Ausgabe: ok
- Details
Kommen Zahlen aus nicht selbst gepflegten Quellen, können sie in verschiedensten Formaten ankommen. Um sie weiter zu verarbeiten, müssen sie vereinheitlicht werden. Diese Funktion macht das.
function getNumbers($value) { $value = str_replace(' ', '', $value); $found = array(); preg_match('#([^0-9])[0-9]+$#', $value, $found); if (empty($found[1]) === false) { if (substr_count($value, $found[1]) > 1) { return ((float)str_replace($found[1], '', $value)); } switch ($found[1]) { case ',': $value = str_replace(array('.', ','), array('', '.'), $value); break; case '.': $value = str_replace(',', '', $value); break; } } return ((float)$value); }
Hier noch ein Codeschnippsel um die Funkion zu testen:
$numbers = array( '-10', '- 10', '.5', '.', '', ' ', ' 5.', '5. ', 'abc', '1abc', 'abc1', '1000', '1500.12', '1500,12', '1500 12', '150 012', '1 5 0 0 1 2', '1 500,12', '1 500.12', '1500, 12', '1500. 12', '1.500,12', '1,500.12', '-1,500.12', '-1,500,000', '-1,500', '1.500', '-1,50', '-1.500,000', '1500,000,000', '1500.000.000' ); foreach ($numbers as $val) { echo $val . ' - ' . getNumbers($val) . '<br />'; }
Um Zahlen aus Strings zu extrahieren findet man hier die passende Funktion.
- Details
Will man aus einem Sting nur die enthaltenen Zahlen (int oder float) erhalten, geht dies mit dieser Funktion: