文字列インターセプトについて質問したいのですが
私が長い間取り組んでいる関数を調べるのに時間を割いてくれる専門家はいますか?
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> <?php function glstrlen($str) { $tmp_array = explode(",",$str); if(strlen($str)>30) { array_pop($tmp_array); $str = implode(",",$tmp_array); if(strlen($str)>30) { glstrlen($str); } else { return $str; } } else { return $str; } } $strs = "Woods,trees,grass ,grassland,Yellow, motorcycle,highway"; $a = glstrlen($strs); echo $a; ?>
$strs = "森、木、草、草原、黄色、オートバイ、高速道路"; $array =explode(',' , $strs); print_r(array_pad($array,30,'.')); <br><font color="#e78608">------解決策---------</font><br>array_pop: 配列の最後のユニットをポップアウトします ( out stack)、返されるのはポップされたユニットであり、最後のユニットをポップした後の配列ではありません。 <br><font color="#e78608">------解決策------------------</font><br>これは再帰的であるため、戻り値は単に Exit to です。前のレベル<br>
関数 glstrlen($str) { $tmp_array =explode(",",$str); if(strlen($str)>30) { // var_dump($str); array_pop($tmp_array); $str = implode(",",$tmp_array); if(strlen($str)>30) { // 戻り値がある場合は終了するという判定を追加し、レイヤーごとに終了してから呼び出しが終了するようにしました。 if(!is_null($str = glstrlen($str)) ) { $str を返します。 } } それ以外 { $str を返します。 } } それ以外 { $str を返します。 } } <br><font color="#e78608">------解決策---------</font><br>
関数 glstrlen($str) { $arr =explode(',', $str); while(strlen($str) > 30) { array_pop($arr); $str = join(',', $arr); } $str を返します。 } echo glstrlen("森、木、草、草原、黄色、オートバイ、高速道路"); <br><font color="#e78608">------解決策---------</font><br>
関数 glstrlen($str) { if(strlen($str)>30) { $tmp_array =explode(",",$str); array_pop($tmp_array); $str = implode(",",$tmp_array); glstrlen($str) を返します。 } $str を返します。 } $strs = "森、木、草、草原、黄色、オートバイ、高速道路"; $a = glstrlen($strs); エコー $a;<div class="clear"></div>