Php 如何将1个用户分配给1个订单id?
我想把数据分成多个用户Php 如何将1个用户分配给1个订单id?,php,Php,我想把数据分成多个用户 <?php $users = array('13','15','16','16','17','20'); $handle = fopen($_FILES['csvfile']['tmp_name'], 'r'); $i = 1; while ($data = fgetcsv($handle)) { foreach ($users as $value) { echo $data
<?php
$users = array('13','15','16','16','17','20');
$handle = fopen($_FILES['csvfile']['tmp_name'], 'r');
$i = 1;
while ($data = fgetcsv($handle)) {
foreach ($users as $value) {
echo $data['OrderId'] .":". $value;
$i++;
}
}
?>
但是我想要这个输出
Order ID : UserId
405-6219270-3721912 : 13
403-5995684-2353914 : 15
404-1894735-7034722 : 16
406-7756082-9574748 : 17
171-7214409-3467567 : 20
405-7442385-9605918 : 15
171-7214409-3467569 : 16
171-7214409-3467570 : 17
171-7214409-3467571 : 20
405-7442385-9605972 : 15
405-7442385-9605973 : 16
405-7442385-9605973 : 17
405-7442385-9605974 : 20
为什么我的循环迭代四次而不是一次?像您一样使用嵌套循环,这将为每个订单形成文件,输出每个用户 您可以改为使用1个循环(读取输入文件)和行号(
%
)的模数($i
)并按订单输出一个用户
$userCount = count($users);
$i = 0;
while ($data = fgetcsv($handle)) {
echo $data[0] .":". $users[$i % $userCount] . PHP_EOL;
$i++;
}
对于每个订单ID(数据),您迭代所有用户。相反,您可以使用如下内容:
迭代用户,对于每个用户,如果仍然存在csv数据,则使用该csv数据并打印订单ID和用户ID。这将只运行
count($users)
次,因此不会使用所有csv文件:)@RiggsFolly确定,但看起来这是所需的输出。在OP发送的列表中,每个用户只有一个输出行,似乎应该忽略CSV数据的其余部分。也许我误解了“但是我想要这个输出”。我猜OP没有花太多时间在他的样本数据和预期结果上,在“但是我想要这个输出”中有多个用户号码如果你仔细观察,忽略OP只有一个13
,并且$users
数组中的2个16
没有像用户数组中那样的两次功能:)@RiggsFolly你是对的,我从来没有注意到多个16,我应该看起来更好,我以为它只是一个列表,每个用户ID只出现一次。您的数据是什么样子的,是否可能会有比订单ID更多的用户?如果订单ID多于用户,那么预期的输出是什么?
$userCount = count($users);
$i = 0;
while ($data = fgetcsv($handle)) {
echo $data[0] .":". $users[$i % $userCount] . PHP_EOL;
$i++;
}