php中的双数组队列算法
我有两个数组,希望在php中的第三个数组中有一个排队系统php中的双数组队列算法,php,queue,Php,Queue,我有两个数组,希望在php中的第三个数组中有一个排队系统 Array 1 3 4 5 6 7 Array 2 24 => U //Unavailable 39 => A //Available 55 => A //Available 77 => A //Available 预期结果:- 所以在数组3中,我想要一个可用的 Array 3 39 => 3 55 => 4 77 => 5 此外,一旦将数组1中的数据分配给数组3,则应将其删除 Arr
Array 1
3
4
5
6
7
Array 2
24 => U //Unavailable
39 => A //Available
55 => A //Available
77 => A //Available
预期结果:-
所以在数组3中,我想要一个可用的
Array 3
39 => 3
55 => 4
77 => 5
此外,一旦将数组1中的数据分配给数组3,则应将其删除
Array 1 should become
6
7
让我知道。提前谢谢。我将从可用的
$array2
中的数字开始
foreach($array[1] as $key => $value){
if($value === 'A') $array[2][$key] = $value;
}
$availables = [];
foreach ($array2 as $key => $value) {
if ($value == 'A') $availables[] = $key;
}
现在我们有两个数组:$availables
和$array1
一个,我们需要组合它们,其中一个表示键,另一个表示新数组的值。您可以使用此功能执行此操作:
我们唯一需要注意的是阵列的大小,因此:
$size1 = count($array1);
$size2 = count($availables);
if ($size1 > $size2) $array1 = array_slice($array1,0,$size2);
if ($size2 > $size1) $availables = array_slice($availables,0,$size1);
然后我们可以将它们结合起来:
$array3 = array_combine($availables,$array1);
见:
最好将其放在函数或方法中,这样数组中的更改就不会影响原始数组
当然,还有很多其他方法可以完成最后两个步骤,例如:
$array3 = [];
foreach ($array1 as $key => $number)
{
if (!isset($availables[$key])) break;
$array3[$availables[$key]] = $number;
}
请参阅:我会这样做:
<?php
$quee = range(1, 100);
$stations = ['1' => ['status' => 'A', 'client' => ''], '2' => ['status' => 'A', 'client' => ''], '3' => ['status' => 'U', 'client' => null], '4' => ['status' => 'A', 'client' => '']];
while ($quee) {
foreach ($stations as $name => &$station) {
if ($station['status'] === 'U') {
echo 'Station ' . $name . ' is busy' . PHP_EOL;
$station['status'] = 'A';
} else {
$station['status'] = 'U';
$client = array_shift($quee);
if ($client != null) {
$station['client'] = $client;
echo 'Im doing client ' . $client . ' on station ' . $name . PHP_EOL;
} else {
break;
}
}
}
}
让你知道什么?它是以预期的结果编写的:-@u_Mulder你知道,这里的人不为你编写代码。如果你需要帮助,表现出一些努力。当你表现出努力时请告诉我。需要什么信息?你试过什么吗?您是否有试图编写的代码?虽然此代码片段可能会解决问题,但它没有解释为什么或如何回答问题。请,因为这确实有助于提高你的文章质量。请记住,您将在将来回答读者的问题,而这些人可能不知道您的代码建议的原因。请如何获得获取数组1的最后一步?我不确定您的意思。但是,我将其全部放在一个函数中,并在此处打印出所有三个数组: