gpt4 book ai didi

php - 在 PHP 中从一维数组创建二维矩阵的最有效方法

转载 作者:行者123 更新时间:2023-12-02 05:21:50 26 4
gpt4 key购买 nike

给定一个字符串数组,例如$a:

$a = array("zero", "one", "cat");

我想创建数组 $b,用 $a 的值“沿对角线”填充:

$b[0] = ["zero", "-", "-"]
$b[1] = ["-", "one", "-"]
$b[3] = ["-", "-", "cat"]

到目前为止,我有:

function matrix($m, $n, $value) {
return array_fill(0, $m, array_fill(0, $n, $value));
} // create a matrix (m,n) of $value

$a = array("zero", "one", "cat");
$b = matrix(count($a),count($a),"'-'"); // create $b, filled with '-'

for($i = 0; $i < count($a); $i++){
$b[$i][$i] = $a[$i];
} // fill matrix b with strings from a, along the diagonal

print_r($b);

在实践中 $a 会非常大,所以我正在寻找一种使服务器瘫痪的可能性最小的方法。

(如果你像我 8 岁一样解释你的版本,将额外感谢。)

最佳答案

在我看来,“不会让服务器瘫痪”的方法将避免函数调用,也不会使用递归,即使两者在代码方面看起来更清晰。无论哪种方式,这都是一个相当简单的问题。

首先,我们创建破折号数组:

$dashes = array_fill(0, count($a), array_fill(0, count($a), '-'));

您可能会注意到一种基于维度的模式:

0,0    1,0    2,0
0,1 1,1 2,1
0,2 1,2 2,2

具体来说,X 和 Y 坐标沿对角线匹配。这很方便,因为我们只需要知道一个或另一个就可以知道要插入到破折号数组中的插槽。 $a 中项目的索引符合以下任一条件(以及两者):

foreach ($a as $num => $item) {
$dashes[$num][$num] = $item;
}

关于php - 在 PHP 中从一维数组创建二维矩阵的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13710866/

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