⊗ppSpOtAC 83 of 83 menu

PHPにおける配列変換の最適化

文字列に対して何かを行うために、常に配列に分割する必要はありません。

例を見てみましょう。 次の例では、コードの著者が文字列内に数字 3 が含まれているかチェックしています:

<?php $str = '12345'; $arr = explode('', $str); // 配列に分割 if (in_array(3, $arr)) { echo '含まれる'; } else { echo '含まれない'; } ?>

著者は素晴らしい - 独自の不完全な解決策を書く代わりに、 PHPの組み込み関数を使用しています。

しかし、コードは依然として最適ではありません:ここでは文字列を配列に分割する必要はありません。 なぜなら、文字列内を検索する既製の関数 strpos が存在するからです:

<?php $str = '12345'; if (strpos($str, '3') !== false) { echo '含まれる'; } else { echo '含まれない'; } ?>

なぜここで配列に分割することが悪いのでしょうか?なぜなら、 第一に、配列への分割にはプロセッサリソースが消費され、 第二に、得られた配列はRAM内に場所を占有するからです (しかも、その占有量は元の文字列が占める場所よりも大きくなります)。

教訓:それを避ける方法があるなら、文字列を配列に分割しないでください。

次のコードでは、あるプログラマーが文字列の文字を逆順に並べ替えています。 このプログラマーの解決策を最適化してください:

<?php $str = '12345'; $rev = implode('', array_reverse(explode('', $str))); echo $rev; // '54321' を出力 ?>

次のコードでは、あるプログラマーがテキスト内の単語数を探しています。 このプログラマーの解決策を最適化してください:

<?php $str = 'aaa bbb ccc'; // ある長い文字列 echo count(explode(' ', $str)); ?>
日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否