PHP 中的维吉尼亚 table
Vigenère table in PHP
我正在尝试使用 PHP 制作 Vigenère table。我的目标是制作一个包含 26 个较小数组的大数组,如下所示:
$bigarray = [['a'-'z']['b'-'a']...['y'-'x']['z'-'y']];
我正在考虑使用 range() 函数制作第一个数组,将其附加到大数组中,然后使用 for 循环获取第一个字母,放置最后那个字母并使该数组追加到一个大数组 x25
$letterarray = range('a','z');
array_merge($bigarray, $firstarray);
for ($idx = 0; $idx < 26; $idx++) {
$letterarray = /* Take first letter from $letterarray, put that letter in the end. */
$bigarray = /* Put the $letterarray into the $bigarray. */
我不知道我是否需要使用 array_splice() 或 array_slice() 功能。我也不知道如何在保持 'array in array' 形式的同时将小数组放入大数组,因为 array_merge() 只是将每个值推入一个大批。
你的方法很可靠。执行只需要复制之前的数组,然后用array_shift
和array_push
到"cycle"即可。
$bigarray = [range('a','z')];
for( $i=1; $i<26; $i++) {
// $i=1 because we already have the first one.
$copy = $bigarray[$i-1]; // get most recent entry
array_push($copy,array_shift($copy));
$bigarray[$i] = $copy;
}
感谢您的评论,我写完这个帖子后自己想出了一个办法。
$bigarray = array();
$alphas = range('a', 'z');
$bigarray[0] = $alphas;
for ($idx = 1; $idx <= 25; $idx++) {
$firstletter = $alphas[0];
$alphas = array_slice($alphas,1);
array_push($alphas, $firstletter);
$bigarray[$idx] = $alphas;
}
它将[a-z]数组($alphas)的第一个字母存储在变量$firstletter中,对$alphas数组进行切片并将$firstletter变量中的元素压入最后并存储新数组[b-a ] 进入 $bigarray.
巧妙的是 array_slice
只是自动更改索引。
感谢您的评论:)
-埃德
我正在尝试使用 PHP 制作 Vigenère table。我的目标是制作一个包含 26 个较小数组的大数组,如下所示:
$bigarray = [['a'-'z']['b'-'a']...['y'-'x']['z'-'y']];
我正在考虑使用 range() 函数制作第一个数组,将其附加到大数组中,然后使用 for 循环获取第一个字母,放置最后那个字母并使该数组追加到一个大数组 x25
$letterarray = range('a','z');
array_merge($bigarray, $firstarray);
for ($idx = 0; $idx < 26; $idx++) {
$letterarray = /* Take first letter from $letterarray, put that letter in the end. */
$bigarray = /* Put the $letterarray into the $bigarray. */
我不知道我是否需要使用 array_splice() 或 array_slice() 功能。我也不知道如何在保持 'array in array' 形式的同时将小数组放入大数组,因为 array_merge() 只是将每个值推入一个大批。
你的方法很可靠。执行只需要复制之前的数组,然后用array_shift
和array_push
到"cycle"即可。
$bigarray = [range('a','z')];
for( $i=1; $i<26; $i++) {
// $i=1 because we already have the first one.
$copy = $bigarray[$i-1]; // get most recent entry
array_push($copy,array_shift($copy));
$bigarray[$i] = $copy;
}
感谢您的评论,我写完这个帖子后自己想出了一个办法。
$bigarray = array();
$alphas = range('a', 'z');
$bigarray[0] = $alphas;
for ($idx = 1; $idx <= 25; $idx++) {
$firstletter = $alphas[0];
$alphas = array_slice($alphas,1);
array_push($alphas, $firstletter);
$bigarray[$idx] = $alphas;
}
它将[a-z]数组($alphas)的第一个字母存储在变量$firstletter中,对$alphas数组进行切片并将$firstletter变量中的元素压入最后并存储新数组[b-a ] 进入 $bigarray.
巧妙的是 array_slice
只是自动更改索引。
感谢您的评论:)
-埃德