我确实需要一些帮助。无论我采取什么方法,我似乎都无法做到这一点。让我进行设置,以便您首先了解任务。
首先我们有一个名为 $play_array 的数据集,其中包含以下信息。
Array(
[506] => Array
(
[minus] => Array
(
[406] => Array
(
[all] => Array
(
[0] => 406
[1] => 460
[2] => 046
[3] => 064
[4] => 640
[5] => 604
[6] => 951
[7] => 915
[8] => 591
[9] => 519
[10] => 195
[11] => 159
[12] => 906
[13] => 960
[14] => 096
[15] => 069
[16] => 690
[17] => 609
[18] => 456
[19] => 465
[20] => 546
[21] => 564
[22] => 645
[23] => 654
[24] => 401
[25] => 410
[26] => 041
[27] => 014
[28] => 140
[29] => 104
[30] => 451
[31] => 415
[32] => 541
[33] => 514
[34] => 145
[35] => 154
[36] => 956
[37] => 965
[38] => 596
[39] => 569
[40] => 695
[41] => 659
[42] => 901
[43] => 910
[44] => 091
[45] => 019
[46] => 190
[47] => 109
)
)
[505] => Array
(
[all] => Array
(
[0] => 505
[1] => 550
[2] => 055
[3] => 050
[4] => 005
[5] => 500
[6] => 555
[7] => 000
)
)
)
)
);
为了了解我如何设置数组,这是我创建的代码
foreach($play_array as $k=>$v){
foreach($v['minus'] as $key=>$val){
$all = file_get_contents("get-nums.php?math=" . $val);
$t_all = explode(", ", $all);
foreach($t_all as $tall){
unset($play_array[$k]['minus'][$key]);
$play_array[$k]['minus'][$val]['all'][] = $tall;
}
}
}
到目前为止一切都很好。这是我遇到麻烦并且似乎无法完全正确的部分。我正在循环遍历 $play_array 以获取我想要显示的减号键。然后我想再次循环遍历 $play_array 并找到其中与减号键匹配的值或其在 [minus][XX][all] 区域内的值。
这是目前的代码。虽然很接近,但不太正确。
foreach($play_array as $k=>$v){
$min_array = $play_array[$k]['minus'];
foreach($min_array as $mk => $mv){
$all = $min_array[$mk]['all'];
$check = array_intersect_key(array_flip($all), $play_array);
if(!empty($check)){
echo $mk . ": ";
foreach($check as $ck=>$cv){
if($ck != $mk){
echo $ck . ', ';
}
}
}
if(!empty($check)){
echo "<br>";
}
}
}
下面是我当前的输出,然后是我想要的输出。
Current:
007: 070,
750: 070,
622: 717, 771, 762,
721: 762, 771, 717,
170: 107, 751,
071: 107, 751,
Desired:
007: 070, 750
622: 717, 771, 762, 712
170: 107, 751, 071
我想我遗漏了一些关于使用 unset() 删除键的信息,这样它们就不会重复,但我不太确定在哪里。非常感谢任何帮助。我花了几个小时尝试多种方法来解决这个问题,这是我一直以来最接近的方法。谢谢!
在最后一个循环中,我只需要根据 array_flip 取消设置键
if(!empty($check)){
echo $mk . ": ";
foreach($check as $ck=>$cv){
if($ck != $mk){
echo $ck . ', ';
unset($play_array[$ck]);
}
}
}