Генерация и сортировка массива. Как исправить программу?

DimaP

Новичок
<?php

error_reporting(E_ALL);
mb_internal_encoding("UTF-8");

$lenght = 13; //длина текста в элементах
$count = 5; //количество элементов

function generate($length){
$letters = 'abdefhiknrstyzABDEFGHKNQRSTYZ';
$strlen_letters = strlen($letters);//длина строки
$name = '';
for ($i = 0; $i < $length; $i++) {
$name .= substr($letters, rand(1, $strlen_letters), $length);
}

return $name;

}

$array = array();
/*$count = 13;*/
$length = 5;
for ($i = 0; $i < $length; $i++) {
$array[$i] = generate($length);
}

echo 'Начальный массив:';

print_r ($array);

echo 'Массив, сортированый в алфавитном порядке:';
sort($array);
print_r($array);

echo 'Массив без первых букв:';
array_map( function($str){
return (string) substr($str,1); } ,$array);
print_r($array);

echo 'Массив, сортированый в алфавитном порядке 2:';
sort($array);
print_r($array);

?>

Вот само задание:
Дано
$lenght - длина текста в элементах, изначально задаем 13
$count - количество элементов, изначально задаем 5

Написать код, который будет генерировать случайный массив состоящий их $count элементов которые содержат текст заданной длины $lenght
После генерации полученный массив выводим на экран используя функцию print_r
Далее сортируем все элементы массива в алфавитном порядке и выводим на экран
Далее обрезаем первую букву во всех элементах и выводим на экран
Далее опять сортируем все элементы массива в алфавитном порядке и выводим на экран

Логика в коде, на мой взгляд, правильная. Какие другие функции можно использовать, в голову не приходит. Помогите плиз исправить программу.
 

Hello

Новичок
@DimaP,
PHP:
echo 'Массив без первых букв:';
array_map( function($str){
return (string) substr($str,1); } ,$array);
array_map создает новый массив, а не изменяет переданный, этот код у тебя работает в холостую
 

pehser

Новичок
Согласен с Hello используй лучьше array_walk

теперь в условии у тебя сказано
$lenght - длина текста в элементах, изначально задаем 13
$count - количество элементов, изначально задаем 5
PHP:
$length = 5;
for ($i = 0; $i < $length; $i++) {
$array[$i] = generate($length);
}
почемуже тогда ты генериш слова длиной 5?
тобиш
$length = 5; вообше не нужно
должно быть так
PHP:
for ($i = 0; $i < $count; $i++) {
$array[$i] = generate($lenght);
}
 
Сверху