我有一个场景,我需要在两个数组之间循环,如下所示
Array
(
[0] => 2
[1] => 5
[2] => 6
[3] => 7
[4] => 8
[5] => 9
[6] => 10
[7] => 11
[8] => 12
)
Array
(
[0] => 1234567890
[1] => 2345678901
[2] => 3456789012
[3] => 4567890123
[4] => 5678901234
[5] => 6789012345
[6] => 7890123456
[7] => 8901234567
[8] => 9012345678
[9] => 9901234567
[10] => 1234567890
[11] => 2345678901
[12] => 3456789012
)
第一个数组是用户,另一个是User1应该映射到第一个移动号码的移动号码,User2应该映射到第二个移动号码并继续。
在这个示例中,我有8个用户,因此对于第8个用户,第8个移动号码将映射到第9个移动号码,它应映射到第一个用户(我的意思是循环,直到所有移动号码都分配给用户)。
答案 0 :(得分:0)
试试这个:
<?php
$mapping = array();
while (!empty($phone)) {
for ($i=0; $i < count($users); $i++) {
empty($mapping[$users[$i]]) and $mapping[$users[$i]] = array();
if (!empty($phone)) {
$mapping[$users[$i]][] = array_shift($phone);
}
}
}
答案 1 :(得分:0)
如果要循环地为用户分配电话号码,只需遍历每个手机号码,获取其索引,通过查找大小的索引的剩余部分,在$users
数组中找到等效索引$users
数组。您可以使用模数(%
)运算符找到余数。
试试这个 -
$users = Array(2,5,6,7,8,9,10,11,12);
$mob = Array(1234567890,2345678901,3456789012,4567890123,5678901234,6789012345,7890123456,8901234567,9012345678,9901234567,1234567890,2345678901,3456789012);
$res = Array();
$user_size = count($users);
//The main logic.
foreach($mob as $k=>$v){
$res[ $users[$k % $user_size] ][] = $v;
}
var_dump($res);
/** OUTPUT
array
2 =>
array
0 => int 1234567890
1 => float 9901234567
5 =>
array
0 => float 2345678901
1 => int 1234567890
6 =>
array
0 => float 3456789012
1 => float 2345678901
7 =>
array
0 => float 4567890123
1 => float 3456789012
8 =>
array
0 => float 5678901234
9 =>
array
0 => float 6789012345
10 =>
array
0 => float 7890123456
11 =>
array
0 => float 8901234567
12 =>
array
0 => float 9012345678