Предельная длина PHP каждой строки в массиве

У меня есть массив с несколькими строками, например:

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

Есть ли способ ограничить длину строки всех массивов, предполагая, что я не знаю, сколько строк будет в определенном массиве.

Благодаря,

Solutions Collecting From Web of "Предельная длина PHP каждой строки в массиве"

Ну, теоретически, это довольно просто: просто создайте функцию, которая «ограничит» длину строки, а если она слишком длинная, отключите ее:

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

EDIT : если вы хотите «ограничить» количество символов при добавлении их в массив, вы можете просто создать проверку функции:

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

Я предполагаю, что вы хотите перебирать каждую строку в массиве и обрезать ее до определенной длины.

Создайте функцию, которая делает это с одной строкой (в качестве аргумента). Используйте array_map для применения этой функции к каждому элементу массива.

Попробуйте сами – если у вас возникнут проблемы, добавьте попытку вашего вопроса.

вы можете использовать

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

чтобы ограничить каждую строку только таким количеством символов. Пример:

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

Это ограничит строки длиной до 20 символов, если я сделаю это правильно.