PHP限制数组中每个字符串的长度

时间:2012-04-23 12:12:03

标签: php arrays

我有一个包含多个字符串的数组,如下所示:

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

我有什么方法可以限制所有数组的字符串长度,假设我不知道某个数组中会有多少字符串。

谢谢,

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

我假设您想要遍历数组中的每个字符串并将其修剪为特定长度。

创建一个函数,对单个字符串(作为参数)执行此操作。使用array_map将此函数应用于数组中的每个元素。

亲自尝试 - 如果您有任何问题,请尝试解决您的问题。

答案 2 :(得分:0)

你可以使用

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

将每个字符串限制为只有这么多字符。一个例子:

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

如果我这样做的话,那将把字符串的长度限制为20个字符。