Php 正在修复数组大小不一致的错误
好的,我的代码有问题,但我找不到问题。当我使用我的代码时,我会出现以下错误:Php 正在修复数组大小不一致的错误,php,mysql,arrays,Php,Mysql,Arrays,好的,我的代码有问题,但我找不到问题。当我使用我的代码时,我会出现以下错误: function findFriends($table){ include "mysql.ws"; $user = $_SESSION['username']; $xptype = findType($table)."xp"; $query = mysql_query("SELECT u.* FROM friends uf inner join users u on uf.friend
function findFriends($table){
include "mysql.ws";
$user = $_SESSION['username'];
$xptype = findType($table)."xp";
$query = mysql_query("SELECT u.* FROM friends uf inner join users u on uf.friend = u.username WHERE uf.user = '$user'") or die(mysql_error());
$myFriends = array();
$xpOrder = array();
WHILE($row = mysql_fetch_array($query)){
$count = count($row);
$friends = $row['username'];
$rank = findRank($friends, "$table");
$sql = mysql_query("SELECT * FROM skills WHERE playerName LIKE '$friends' ORDER BY '$xptype' DESC") or die(mysql_error());
while($skillsRow = mysql_fetch_array($sql)){
for ($i = 1; $i <= $count; $i++){
$myFriends[$friends] = array(
'xp' => $skillsRow[$xptype],
'lvl' => getLevelForXP($skillsRow[$xptype]),
'rank' => $rank,
);
$xpOrder[] = $skillsRow[$xptype];
}
array_multisort($xpOrder, SORT_NUMERIC, SORT_DESC, $myFriends);
unset($xpOrder);
foreach ($myFriends as $friend => $data){
if(dots($data['xp']) !=0){
echo '
<a name="'.$data['rank'].'"></a>
<a href="compare.ws?user1='.$friend.'" target="_self" class="row ">
<span class="columnRank">
<span>'.$data['rank'].'</span>
</span>
<span class="columnName">
<span>'.BBCode($friend).'</span>
</span>
<span class="columnLevel">
<span>'.$data['lvl'].'</span>
</span>
<span class="columnXp">
<span>'.dots($data['xp']).'</span>
</span>
</a>';
}
}
}
}
警告:array_multisort()[function.array multisort]:第1506行的/home/sagesca1/public_html/hiscores/functions.ws中的数组大小不一致
这是我的密码:
function findFriends($table){
include "mysql.ws";
$user = $_SESSION['username'];
$xptype = findType($table)."xp";
$query = mysql_query("SELECT u.* FROM friends uf inner join users u on uf.friend = u.username WHERE uf.user = '$user'") or die(mysql_error());
$myFriends = array();
$xpOrder = array();
WHILE($row = mysql_fetch_array($query)){
$count = count($row);
$friends = $row['username'];
$rank = findRank($friends, "$table");
$sql = mysql_query("SELECT * FROM skills WHERE playerName LIKE '$friends' ORDER BY '$xptype' DESC") or die(mysql_error());
while($skillsRow = mysql_fetch_array($sql)){
for ($i = 1; $i <= $count; $i++){
$myFriends[$friends] = array(
'xp' => $skillsRow[$xptype],
'lvl' => getLevelForXP($skillsRow[$xptype]),
'rank' => $rank,
);
$xpOrder[] = $skillsRow[$xptype];
}
array_multisort($xpOrder, SORT_NUMERIC, SORT_DESC, $myFriends);
unset($xpOrder);
foreach ($myFriends as $friend => $data){
if(dots($data['xp']) !=0){
echo '
<a name="'.$data['rank'].'"></a>
<a href="compare.ws?user1='.$friend.'" target="_self" class="row ">
<span class="columnRank">
<span>'.$data['rank'].'</span>
</span>
<span class="columnName">
<span>'.BBCode($friend).'</span>
</span>
<span class="columnLevel">
<span>'.$data['lvl'].'</span>
</span>
<span class="columnXp">
<span>'.dots($data['xp']).'</span>
</span>
</a>';
}
}
}
}
函数findFriends($table){
包括“mysql.ws”;
$user=$\会话['username'];
$xptype=findType($table)。“xp”;
$query=mysql\u query(“在uf.friend=u.username上从friends-uf-internal-join-users中选择u.*”,其中uf.user='$user')或die(mysql\u-error());
$myFriends=array();
$xpOrder=array();
WHILE($row=mysql\u fetch\u array($query)){
$count=计数($row);
$friends=$row['username'];
$rank=find($friends,$table);
$sql=mysql\u query(“从玩家名称中选择*,如“$xptype”DESC下的“$friends”命令”)或die(mysql\u error());
而($skillsRow=mysql\u fetch\u数组($sql)){
对于($i=1;$i$skillsRow[$xptype],
“lvl”=>getLevelForXP($skillsRow[$xptype]),
'rank'=>$rank,
);
$xpOrder[]=$skillsRow[$xptype];
}
数组\u multisort($xpOrder,SORT\u NUMERIC,SORT\u DESC,$myFriends);
未结算($xpOrder);
foreach($myFriends as$friends=>$data){
如果(点($data['xp'])!=0){
回声'
';
}
}
}
}
}
有人能帮我解决这个问题吗?如果您需要关于我的代码的任何其他方法,我很乐意将其添加到这个问题中。因为我可以告诉您,
$xpOrder
数组将$count
元素长,而$myFriends
在经历了第一个for
-循环后很长一段时间后将成为一个元素,因为您只是一遍又一遍地覆盖$friends
元素。如果要进行多重排序的数组具有相同数量的元素,则只能使用array\u multisort。根据错误,可以假设$xpOrder
和$myFriends
具有不同数量的元素,从而导致此错误
只需对这两个数组进行打印,\r
,试着看看是否能找出差异出现的地方
检查此代码是否有效:
function findFriends($table){
include "mysql.ws";
$user = $_SESSION['username'];
$xptype = findType($table)."xp";
$query = mysql_query("SELECT u.* FROM friends uf inner join users u on uf.friend = u.username WHERE uf.user = '$user'") or die(mysql_error());
$myFriends = array();
$xpOrder = array();
WHILE($row = mysql_fetch_array($query)){
$count = count($row);
$friends = $row['username'];
$rank = findRank($friends, "$table");
$sql = mysql_query("SELECT * FROM skills WHERE playerName LIKE '$friends' ORDER BY '$xptype' DESC") or die(mysql_error());unset($myFriends);
while($skillsRow = mysql_fetch_array($sql)){
unset($myFriends);
for ($i = 1; $i <= $count; $i++){
$myFriends[] = array(
'friend' => $friends,
'xp' => $skillsRow[$xptype],
'lvl' => getLevelForXP($skillsRow[$xptype]),
'rank' => $rank,
);
$xpOrder[] = $skillsRow[$xptype];
}
array_multisort($xpOrder, SORT_NUMERIC, SORT_DESC, $myFriends);
unset($xpOrder);
foreach ($myFriends as $data){
if(dots($data['xp']) !=0){
echo '
<a name="'.$data['rank'].'"></a>
<a href="compare.ws?user1='.$data['friend'].'" target="_self" class="row ">
<span class="columnRank">
<span>'.$data['rank'].'</span>
</span>
<span class="columnName">
<span>'.BBCode($data['friend']).'</span>
</span>
<span class="columnLevel">
<span>'.$data['lvl'].'</span>
</span>
<span class="columnXp">
<span>'.dots($data['xp']).'</span>
</span>
</a>';
}
}
}
}
}
函数findFriends($table){
包括“mysql.ws”;
$user=$\会话['username'];
$xptype=findType($table)。“xp”;
$query=mysql\u query(“在uf.friend=u.username上从friends-uf-internal-join-users中选择u.*”,其中uf.user='$user')或die(mysql\u-error());
$myFriends=array();
$xpOrder=array();
WHILE($row=mysql\u fetch\u array($query)){
$count=计数($row);
$friends=$row['username'];
$rank=find($friends,$table);
$sql=mysql\u query(“从玩家名称中选择*,如“$xptype”DESC下的“$friends”命令”)或die(mysql\u error());unset($myFriends);
而($skillsRow=mysql\u fetch\u数组($sql)){
unset($myFriends);
对于($i=1;$i$朋友,
“xp”=>$skillsRow[$xptype],
“lvl”=>getLevelForXP($skillsRow[$xptype]),
'rank'=>$rank,
);
$xpOrder[]=$skillsRow[$xptype];
}
数组\u multisort($xpOrder,SORT\u NUMERIC,SORT\u DESC,$myFriends);
未结算($xpOrder);
foreach($myFriends作为$data){
如果(点($data['xp'])!=0){
回声'
';
}
}
}
}
}
我认为问题在于,有些人不在技能表上,因为他们是员工的一部分,我不允许他们出现在技能表上,既然是这样,我该怎么做呢?我对代码做了一些更改,并在回答中对其进行了更新。当然,它没有经过测试,因为我不知道数据库的外观。警告:第1556行的/home/sagesca1/public_html/hiscores/functions.ws中为foreach()提供的参数无效。您知道它是哪一行吗?是带有BBCode()
的吗?是foreach($myFriends as$data){