使用PHP与2个foreach循环中的数组进行比较时如何获取迭代次数
Posted
技术标签:
【中文标题】使用PHP与2个foreach循环中的数组进行比较时如何获取迭代次数【英文标题】:How to get iteration count when comparing to arrays in 2 foreach loops using PHP 【发布时间】:2022-01-12 22:03:36 【问题描述】:我有 2 个数组想要获得总票数。数组 1 是用户提案,数组 2 是用户对提案的投票。我正在尝试比较 2 并计算每个提案的总票数。
这是 2 个数组 -
$props = json_decode('["proposal":"proposal 1", "owner":"tom", "lock_time":1639440607,"proposal":"proposal 2", "owner":"bob", "lock_time":1639455554]', true);
$votes = json_decode('["vote":"approve", "owner":"tom", "prop-id":1639440607,"vote":"reject", "owner":"bob", "prop-id":1639455554,"vote":"reject", "owner":"tom", "prop-id":1639440607]', true);
想要的输出如下-
Proposal 1 = 1 Approve and 1 Reject
Proposal 2 = 0 Approve and 1 Reject
我得到的输出是 -
Proposal 1 = 1 Approve and 1 Reject
Proposal 2 = 1 Approve and 1 Reject
这是我的尝试,但没有提供所需的输出 -
foreach($props as $props)
$lock_time = $props['lock_time'];
$my_proposal = $props['proposal'];
foreach($votes as $votes)
$id = $votes['prop-id'];
$vote = $votes['vote'];
if($lock_time == $id)
if($vote == 'approve')
$yay++;
elseif($vote == 'reject')
$nay++;
echo 'Proposal: '.$my_proposal.'<br>';
echo 'yay:: '.$yay.'<br>';
echo 'nay:: '.$nay.'<br>';
echo '<br><br>';
这是我的演示 - http://sandbox.onlinephpfunctions.com/code/abea2fa828c067ce3efc1440af201fce839645b6
【问题讨论】:
【参考方案1】:在这块
if($vote == 'approve') $yay++; elseif($vote == 'reject') $nay++;
您需要重置每个提案的值,因此应该是这样的:
foreach($props as $props)
$lock_time = $props['lock_time'];
$my_proposal = $props['proposal'];
$yay=0;
$nay=0;
foreach($votes as $vote)
$id = $vote['prop-id'];
$theVote = $vote['vote'];
if($lock_time == $id)
if($theVote == 'approve')
$yay++;
elseif($theVote == 'reject')
$nay++;
echo 'Proposal: '.$my_proposal.PHP_EOL;
echo 'yay:: '.$yay.PHP_EOL;
echo 'nay:: '.$nay.PHP_EOL;
echo PHP_EOL;
【讨论】:
是的,非常感谢你:-) 欢迎,如果它的工作接受答案PLZ @RyanD,是的,我很惊讶提案的拒绝数不是 2,因此。 我不得不等待几分钟才能接受,现在接受了,再次感谢!你是对的,有 2 次拒绝和 1 次批准,我在预期的输出中弄错了。很好的收获。以上是关于使用PHP与2个foreach循环中的数组进行比较时如何获取迭代次数的主要内容,如果未能解决你的问题,请参考以下文章