在“无第一个字符”部分中,只显示数组的最后一个元素,不确定原因。需要整个阵列才能显示。有人会建议吗? 我应该离开foreach循环还是使用其他东西来完成任务? 只需要删除数组中每个随机字的第一个字母。
function generate($length)
{
$a1 = str_split('0123456789');
$a2 = str_split('abcdefghijklmnopqrstuvwxyz');
$a3 = str_split('!#$');
$result = '';
for ($i = 0; $i < $length; $i ++)
{
$values = array_merge($a1,$a2,$a3);
$x = rand(0, count($values)-1);
$result .= $values[$x];//taking one symbol
}
return $result;
}
$array = array();
$count = 4; // number of elements
$length = 5;
for ($i = 0; $i < $count; $i++) {
$array[] = generate($length);
}
echo '<br>';
echo 'Original array: ' , '<pre>';
print_r($array);
echo '</pre>', '<br>';
echo 'Sorted: ';
sort($array);
echo '<pre>';
print_r($array);
echo '</pre>' ,'<br>';
echo 'No first characters: ';
foreach($array as $word)
{
$array = substr($word,1);
}
echo '<pre>';
print_r($array);
echo '</pre>' ,'<br>';
答案 0 :(得分:2)
如果您需要删除每个单词中的字母,那么为什么要重写$array
?使用带有&
的简单循环,它通过引用传递变量:
foreach($array as &$word)
{
$word = substr($word,1);
}
答案 1 :(得分:0)
最好和最短的方法;
echo 'No first characters: ';
$array = array_map(function($word){ return substr($word,1); }, $array);