我有問題$ res數組....我不知道$ res [0]就像一個空變量(數組有很多日期,但我不知道爲什麼和哪裏錯了...我嘗試使用$ res ['ItemSlotX']和現在與$ res [0] ... 編輯:我已經改變了我的$ res [0]和1但是是相同的...PHP陣列在一段時間
謝謝大家幫忙
function smartsearch($whbin,$itemX,$itemY) {
if (substr($whbin,0,2)=='0x') $whbin=substr($whbin,2);
$items = str_repeat('0', 240);
$itemsm = str_repeat('1', 240);
$i = 0;
while ($i<240) {
$_item = substr($whbin,(64*$i), 64);
$type = (hexdec(substr($_item,18,2))/16);
$dbgetvalutslots = new DB_MSSQL;
$dbgetvalutslots->Database='DTRMUWAP';
$dbgetvalutslots->query("Select [ItemSlotX],[ItemSlotY] from ItemDetails where ItemIndex = '".hexdec(substr($_item,0,2))."' and ItemGroup = '".$type."'");
$ijj=0;
$res=array();
while ($dbgetvalutslots->next_record()) {
$temp = array(
'ItemSlotX' => $dbgetvalutslots->f('ItemSlotX'),
'ItemSlotY' => $dbgetvalutslots->f('ItemSlotY')
);
$res[$ijj]=$temp;
$ijj++;}
$y = 0;
while($y<$res[1]) {
$y++;
$x=0;
while($x<$res[0]) {
$items = substr_replace($items, '1', ($i+$x)+(($y-1)*8), 1);
$x++;
}
}
$i++;
}$y = 0;
while($y<$itemY) {
$y++;$x=0;
while($x<$itemX) {
$x++;
$spacerq[$x+(8*($y-1))] = true;
}
}
$walked = 0;
$i = 0;
while($i<120) {
if (isset($spacerq[$i])) {
$itemsm = substr_replace($itemsm, '0', $i-1, 1);
$last = $i;
$walked++;
}
if ($walked==count($spacerq)) $i=119;
$i++;}$useforlength = substr($itemsm,0,$last);
$findslotlikethis='^'.str_replace('++','+',str_replace('1','+[0-1]+', $useforlength));
$i=0;$nx=0;$ny=0;
while ($i<120) {
if ($nx==8) { $ny++; $nx=0; }
if ((eregi($findslotlikethis,substr($items, $i, strlen($useforlength)))) && ($itemX+$nx<9) && ($itemY+$ny<16))
return $i;
$i++;
$nx++;
}
return 1337;}
這是不明確的問題,代碼是如此骯髒的瞭解...對不起:( – Anri
'var_dump($ res)' - 它不包含你認爲它包含的內容。具體來說 - 你正在創建一個數組數組;而且它是包含'ItemSlotY'的子數組,所以你不能以你想要的方式迭代它們。 – andrewsi
是的,請你幫個忙,重新格式化代碼。另一個建議:儘量避免(臨時)變量 - 例如你可以擺脫'$ ijj',但只需使用'$ res [] = ...'。 $ temp [] = array( 'ItemSlotX'=> $ dbgetvalutslots-> f('ItemSlotX'), 'ItemSlotY'=> $ dbgetvalutslots-> f('ItemSlotY') ) ;'。我認爲更多的意見是'$ x = 0; while($ x
VolkerK