Path: csiph.com!weretis.net!feeder4.news.weretis.net!feeder1.news.weretis.net!news.solani.org!.POSTED!not-for-mail From: Thomas 'PointedEars' Lahn Newsgroups: de.comp.lang.php Subject: Re: Komplexe oder-Vergleiche optimieren Date: Mon, 21 Mar 2016 21:08:29 +0100 Organization: PointedEars Software (PES) Lines: 79 Message-ID: <1896233.7jEbrbfNVf@PointedEars.de> References: <5t56ed3797i781bn3e8%sfroehli@Froehlich.Priv.at> <56EE6151.8070405@arnowelzel.de> Reply-To: Thomas 'PointedEars' Lahn Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8Bit X-Trace: solani.org 1458590910 16665 eJwNyMEBwCAIA8CVBEmQcQrI/iPYex42heVG0DAYudidaIZoX6TyTFVlevun4Qkxn5z/11kdDysiEWw= (21 Mar 2016 20:08:30 GMT) X-Complaints-To: abuse@news.solani.org NNTP-Posting-Date: Mon, 21 Mar 2016 20:08:30 +0000 (UTC) User-Agent: KNode/4.14.2 X-User-ID: eJwFwYEBwCAIA7CXFGil50zA/09YAudmnSAYeHj7pGFJbTWdVvLew9vTXlqvAqDZXM3kKTGv0MgvPi0vzx9UHRWG Cancel-Lock: sha1:CsH4o8SwDYugJjw3oA75PDUGZ9k= X-NNTP-Posting-Host: eJwFwYEBwDAEBMCVeB4ZR1T2H6F3tNCY9GA4H59db9TNIiR0BDuWi7Hanu+oU46kNdB1VuUHDV8QXg== Xref: csiph.com de.comp.lang.php:3790 Klaus Ketelaer wrote: > Am 21.03.2016 um 12:52 schrieb Torsten Zuehlsdorff: >> On 21.03.2016 11:52, Klaus Ketelaer wrote: >>> Am 21.03.2016 um 10:13 schrieb Torsten Zuehlsdorff: >> Du hast genügend Probleme um nach Hilfe zu suchen. ;) Und das Throttling >> ermöglicht es die wenigen Problemfälle ordentlich einzudämmen. :) > > Weil Du mein Problem anscheinend nicht erkannt hast, hier > noch einmal die Eingangsfrage: > > > mit welchem Vorgehen ließe sich folgender Code am > besten optimieren? > > […] > > Es gibt so viele Wege, aber welcher bringt die beste > Performance? > Du hast ein X–Y-Problem, aber sowohl zu X als auch Y wurde Dir bereits geantwortet. Als Lösung für Problem X würde ich hier entweder eine Funktion, welche über ein Array iteriert und abbricht, sobald ein Array-Element einer Bedingung genügt – etwas wie ECMAScript’s Array.prototype.some() gibt es anscheinend noch nicht in PHP, also schreibt man es sich schnell: function array_some (callable $callback, array $array1, array $array2 = array()) { $args = func_get_args(); array_shift($args); foreach ($args as $array) { foreach ($array as $key => $value) { if ($callback($value, $key, $array)) { return true; } } } return false; } Und dann *sinngemäss*: if (array_some(function ($bot) use ($agent) { return strpos($agent, $bot) !== false; }, $bots)) { /* … */ } –, oder *sinngemäss* das vorgeschlagene if (preg_match( '/' . implode('|', array_map( function ($bot) { return preg_quote($bot, '/'); }, $bots)) . '/', $agent)) { /* … */ } benutzen. -- PointedEars Zend Certified PHP Engineer | Twitter: @PointedEars2 Please do not cc me. / Bitte keine Kopien per E-Mail.