我使用以下代码创建了一个数组列表:
<?php
$ids = array();
if (mysql_num_rows($query1))
{
while ($result = mysql_fetch_assoc($query1))
{
$ids["{$result['user_id']}"] = $result;
}
}
mysql_free_result($query1);
?>
现在,我需要从数组中读取两个元素。第一个是当前,第二个是数组的下一个元素。因此,简化过程如下:
i=0: current_element (pos:0), next_element (pos:1)
i=1: current_element (pos:1), next_element (pos:2)
etc
为此,我已经编写了以下代码,但我无法获得每个循环的下一个元素!
以下是代码:
if (count($ids))
{
foreach ($ids AS $id => $data)
{
$userA=$data['user_id'];
$userB=next($data['user_id']);
}
}
我收到的消息是:警告:next()期望参数1是数组,在第X行的array.php中给出的字符串
有人可以提供帮助吗?也许我试着做错了。
答案 0 :(得分:1)
current
,next
,prev
,end
函数可以使用数组本身并在数组上放置位置标记。如果你想使用next
函数,也许这就是代码:
if (is_array($ids))
{
while(next($ids) !== FALSE) // make sure you still got a next element
{
prev($ids); // move flag back because invoking 'next()' above moved the flag forward
$userA = current($ids); // store the current element
next($ids); // move flag to next element
$userB = current($ids); // store the current element
echo(' userA='.$userA['user_id']);
echo('; userB='.$userB['user_id']);
echo("<br/>");
}
}
您将在屏幕上看到此文字:
userA=1; userB=2
userA=2; userB=3
userA=3; userB=4
userA=4; userB=5
userA=5; userB=6
userA=6; userB=7
userA=7; userB=8
答案 1 :(得分:0)
你得到第一个项目,然后循环其余部分,在每个循环结束时,你将当前项目移动为下一个第一项......代码应该更好地解释它:
if (false !== ($userA = current($ids))) {
while (false !== ($userB = next($ids))) {
// do stuff with $userA['user_id'] and $userB['user_id']
$userA = $userB;
}
}
上一个回答
您可以将数组分块成对:
foreach (array_chunk($ids, 2) as $pair) {
$userA = $pair[0]['user_id']
$userB = $pair[1]['user_id']; // may not exist if $ids size is uneven
}
另请参阅:array_chunk()