gpt4 book ai didi

php - 之字形扫描 N x N 阵列

转载 作者:IT王子 更新时间:2023-10-28 23:57:28 27 4
gpt4 key购买 nike

我有一个简单的数组。数组长度总是有一个整数的平方根。所以 16、25、36 等等。

$array = array('1', '2', '3', '4' ... '25');

我所做的是用 HTML 排列数组,使其看起来像一个具有均匀边的块。



我想要做的是对元素进行排序,这样当我将 JSON 编码的数组传递给 jQuery 时,它会迭代数组,淡入当前块,因此我会得到一种波浪动画。所以我想像这样对数组进行排序



所以我的排序数组看起来像
$sorted = array('1', '6', '2', '3', '7', '11', '16, '12' .. '25');

有没有办法这样做?..谢谢

最佳答案

这是我的。

function waveSort(array $array) {
$dimension = pow(count($array),0.5);
if((int)$dimension != $dimension) {
throw new InvalidArgumentException();
}

$tempArray = array();
for($i = 0; $i < $dimension; $i++) {
$tempArray[] = array_slice($array,$i*$dimension,$dimension);
}

$returnArray = array();

for($i = 0; $i < $dimension * 2 -1; $i++) {
$diagonal = array();

foreach($tempArray as $x => $innerArray) {
if($i - $x >= 0 && $i - $x < $dimension) {
$diagonal[] = $innerArray[$i - $x];
}
}

if($i % 2 == 1) {
krsort($diagonal);
}

$returnArray = array_merge($returnArray,$diagonal);

}

return $returnArray;

}

用法:
<?php
$a = range(1,25);
var_dump(waveSort($a));

输出
array(25) {
[0]=>
int(1)
[1]=>
int(6)
[2]=>
int(2)
[3]=>
int(3)
[4]=>
int(7)
[5]=>
int(11)
[6]=>
int(16)
[7]=>
int(12)
[8]=>
int(8)
[9]=>
int(4)
[10]=>
int(5)
[11]=>
int(9)
[12]=>
int(13)
[13]=>
int(17)
[14]=>
int(21)
[15]=>
int(22)
[16]=>
int(18)
[17]=>
int(14)
[18]=>
int(10)
[19]=>
int(15)
[20]=>
int(19)
[21]=>
int(23)
[22]=>
int(24)
[23]=>
int(20)
[24]=>
int(25)
}

关于php - 之字形扫描 N x N 阵列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15201395/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com