ホームページ > バックエンド開発 > PHPチュートリアル > 文字列インターセプトについて質問があります。

文字列インターセプトについて質問があります。

WBOY
リリース: 2016-06-13 13:32:42
オリジナル
906 人が閲覧しました

文字列インターセプトについて質問したいのですが
私が長い間取り組んでいる関数を調べるのに時間を割いてくれる専門家はいますか?

PHP コード
<!--

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;
?>

ログイン後にコピー


先ほど文字列をインターセプトして長さを30文字以内に制御しましたが、関数内で何が間違っているのかわかりません。不思議です。見てください。オンラインで待っています。

-----解決策---------
PHP コード

$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>
ログイン後にコピー
PHP コード
関数 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>
ログイン後にコピー
PHP コード
関数 glstrlen($str) {
    $arr =explode(',', $str);
    while(strlen($str) > 30) {
        array_pop($arr);
        $str = join(',', $arr);
    }
    $str を返します。
}
echo glstrlen("森、木、草、草原、黄色、オートバイ、高速道路");
<br><font color="#e78608">------解決策---------</font><br>
ログイン後にコピー
PHP コード
関数 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>
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート