У меня есть массив с несколькими строками, например:
$str[0] = "kasdnkjsandjabsdkjsbad"; $str[1] = "kasdnkjsandjasdjksabdjkasbkjdsak"; $str[2] = "kasdnkjsandsadbaskjdbsakjdbasdsadjsadjksabdk"; $str[3] = "kasdnkjsandasdjbaskdbjsakbdkjsabdjksabdkjsabdjkasbdjksa"; $str[4] = "kasdnkjsandsajdbaskjdbjksabdjkbasjkdbjksadbjksadbjksadbjksadbkjsa"; $str[5] = "kasdnkjsandasdjbsakdjbsakjdbsakjdsakjdbjksabdjksabdkjasbkjdasbkjdbsakjdsabjk";
Есть ли способ ограничить длину строки всех массивов, предполагая, что я не знаю, сколько строк будет в определенном массиве.
Благодаря,
Ну, теоретически, это довольно просто: просто создайте функцию, которая «ограничит» длину строки, а если она слишком длинная, отключите ее:
<?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 символов, если я сделаю это правильно.