gpt4 book ai didi

php - 如何在 PHP 中构建键组合数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:27:08 27 4
gpt4 key购买 nike

在开始解释我的问题之前,我知道很可能已经有大量的示例脚本可以满足我的需要,但老实说,我无法准确地理解我想要的内容。

我的需要是计算一个向量,列出此类矩阵的所有可能组合,其中单个值可能是可能性的关键。

为了更好地解释您的意思,请考虑以下示例:

$start = 10;
$matrix = array(
10 => array(11,12,13),
11 => array(21,31,41),
13 => array(99,98,97),
41 => array(7,8,9)
)

我需要开发一种算法,该算法能够返回所有可能组合的矩阵,考虑到只有当键存在时才能置换值。或者更好(再举一个例子)我想获得这样的输出:

$output = array(
[0] => array(10 , 11 , 21), //-- 21 is not a key so the 1st element contains only 3 values
[1] => array(10 , 11 , 31)
[2] => array(10 , 11 , 41 , 7)
[4] => array(10 , 11 , 41 , 8)
[5] => array(10 , 11 , 41 , 9)
[6] => array(10 , 12)
[7] => array(10 , 13 , 99)
[8] => array(10 , 13 , 98)
[9] => array(10 , 13 , 97)
);

有没有人遇到过类似的问题?

最佳答案

经过一些尝试,也许我找到了一个可能的解决方案,如果有用的话:

// variables, start and matrix are the same
$end = array();
$i = 0;
$from ="";
$res = compute($matrix, $start, $from, $i, $end);

// recursive function
function compute( $matrix, $val, &$from, &$i, &$end){
// temp base path
$tmp = $from;
if( isset($matrix[$val]) ){
$out = array();
while(list($c,$item)=each($matrix[$val])){
if( $c == 0)
$from .= ($from=="")?($val):(",".$val);

$r = compute( $matrix, $item, $from, $i, $end);

$out[$val][] = $r;

if( is_array($r) ){
// reset of "base path" to temporary + current val
$from = ($tmp!="")?($tmp.",".$val):$val;
}
}

return $out;

}else{
// ADD ending value to "path"
$from .=",".$val;
// ADD complete "path" to END array
$end[$i] = $from;
// reset "path" to NODE before
$from = $tmp;
// new key for END array
$i++;

return $val;
}
}

然后:我添加代码来填充 $end,这对我来说最困难,我不确定,在主要的“核心”功能之后:打印_r($结束);返回这个:

Array
(
[0] => 10,11,21
[1] => 10,11,31
[2] => 10,11,41,7
[3] => 10,11,41,8
[4] => 10,11,41,9
[5] => 10,12
[6] => 10,13,99
[7] => 10,13,98
[8] => 10,13,97
)

构建$res的代码是函数递归核心,print_r($res);返回这个:

Array
(
[10] => Array
(
[0] => Array
(
[11] => Array
(
[0] => 21
[1] => 31
[2] => Array
(
[41] => Array
(
[0] => 7
[1] => 8
[2] => 9
)

)

)

)

[1] => 12
[2] => Array
(
[13] => Array
(
[0] => 99
[1] => 98
[2] => 97
)

)

)

)

关于php - 如何在 PHP 中构建键组合数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23390371/

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