0

次のように、複数の文字列を含む配列があります。

$str[0] = "kasdnkjsandjabsdkjsbad";
$str[1] = "kasdnkjsandjasdjksabdjkasbkjdsak";
$str[2] = "kasdnkjsandsadbaskjdbsakjdbasdsadjsadjksabdk";
$str[3] = "kasdnkjsandasdjbaskdbjsakbdkjsabdjksabdkjsabdjkasbdjksa";
$str[4] = "kasdnkjsandsajdbaskjdbjksabdjkbasjkdbjksadbjksadbjksadbjksadbkjsa";
$str[5] = "kasdnkjsandasdjbsakdjbsakjdbsakjdsakjdbjksabdjksabdkjasbkjdasbkjdbsakjdsabjk";

特定の配列にいくつの文字列があるかわからないと仮定して、すべての配列の文字列の長さを制限する方法はありますか?

ありがとう、

4

3 に答える 3

3

理論的には、これは非常に単純です。文字列の長さを「制限」する関数を作成し、長すぎる場合は削除するだけです。

<?php

$str = array( );
$str[0] = "kasdnkjsandjabsdkjsbad";
$str[1] = "kasdnkjsandjasdjksabdjkasbkjdsak";
$str[2] = "kasdnkjsandsadbaskjdbsakjdbasdsadjsadjksabdk";
$str[3] = "kasdnkjsandasdjbaskdbjsakbdkjsabdjksabdkjsabdjkasbdjksa";
$str[4] = "kasdnkjsandsajdbaskjdbjksabdjkbasjkdbjksadbjksadbjksadbjksadbkjsa";
$str[5] = "kasdnkjsandasdjbsakdjbsakjdbsakjdsakjdbjksabdjksabdkjasbkjdasbkjdbsakjdsabjk";

$length = 10;

$substr = function( $element ) use ( $length ) {
    return substr( $element, 0, $length );
};

$str = array_map( $substr, $str ); 

var_dump( $str );

編集:配列に文字を追加するときに文字数を「制限」したい場合は、関数でチェックを作成するだけです:

<?php

function append( &$array, $value, $length = 25 ) {
    if( mb_strlen( $value ) > $length ) {
        return false;
    }
    return $array[] = $value;
}

$strings = array( );

append( $strings, 'kasdnkjsandjabsdkjsbad' ); // is accepted.
append( $strings, 'kasdnkjsandjabsdkjsbadkasdnkjs' ); // is not accepted
append( $strings, 'kasdnkjsandsadbaskjdbsakjdbasdsadjsadjksabdk' ); // is not accepted.



// if you *really* want to exit when a value is too long:
function append_exit( $array, $value, $length = 25 ) {
    if( mb_strlen( $value ) > $length ) {
        trigger_error( 'Value is too long.', E_USER_ERROR );
        exit;
    }
    return $array[] = $value;
}
于 2012-04-23T12:20:31.790 に答える
0

あなたが使用できる

substr( $myString, $startInt, [$endInt] );

各文字列を非常に多くの文字に制限します。例:

for( $i = 0; $i < sizeof( $myArray ); $i++ ){
    $myArray[$i] = substr( $myString, 0, 20 );
}

私がそれを正しく行った場合、文字列の長さは 20 文字に制限されます。

于 2012-04-23T12:19:42.627 に答える
0

配列内の各文字列を繰り返し処理し、特定の長さにトリミングする必要があると想定しています。

これを単一の文字列に対して (引数として) 実行する関数を作成します。array_mapこの関数を配列内の各要素に適用するために使用します。

これを自分で試してみてください。問題がある場合は、質問にその試みを追加してください。

于 2012-04-23T12:19:13.940 に答える