2012-09-09 63 views
0

如何擺脫錯誤:Undefined offset: 1 on line 20?我知道它發生因爲Im調用數組,這是抵消根本不存在。如何擺脫PHP未定義的偏移錯誤?

讓我們拭目以待@完全不對。

//create an array with all x, y 
for ($x = 1; $x <= 5; $x++) $array_x[] = $x; 
for ($y = 1; $y <= 5; $y++) $array_y[] = $y; 

$IN_x = "'" . implode("', '", $array_x) . "'"; 
$IN_y = "'" . implode("', '", $array_y) . "'"; 

$pullMapInfo = "SELECT x, y, value FROM mapinfo WHERE id='{$id}' AND x IN ({$IN_x}) AND y IN ({$IN_y})"; 
$pullMapInfo2 = mysql_query($pullMapInfo) or die('error here'); 

//create an associative array x, y => value 
while ($pullMapInfo3 = mysql_fetch_assoc($pullMapInfo2)) { 
    $result[ $pullMapInfo3['x'] ][ $pullMapInfo3['y'] ] = $pullMapInfo3['value']; 
} 

//loop to display output 
foreach ($array_x as $x) { 
foreach ($array_y as $y) { 
    if (array_key_exists($x, $result) && array_key_exists($y, $result)) { 
     echo '<div class="castle_array" id="'.$x,'x',$y.'">'. $result[$x][$y] .'</div> 
       '; 
    } else { 
     echo '<div class="castle_array" id="'.$x,'x',$y.'"></div> 
       '; 
    } 
} 
} 

2 for循環似乎awkard

回答

0

您對array_key_exists秒呼籲應通過在$result[$x]

if (array_key_exists($x, $result) && array_key_exists($y, $result[$x])) { 
    // Code goes here... 
} 
+0

嗯我真的不知道爲什麼它應是'($ Y,$結果[$ X])'代替'($ Y, $ result [$ y])'或'($ y,$ result)' –

+0

@ user1656447 - 你想檢查'$ result [$ x]'數組是否有'$ y'鍵,因爲這正是你'在下一行使用:'$ result [$ x] [$ y]'。 –

2

替換此行:

if (array_key_exists($x, $result) && array_key_exists($y, $result)) { 

有:

if (isset($result[$x][$y])) { 

文檔:isset

對於約瑟夫·西爾伯:嘗試this PHP fiddle

+0

@JosephSilber:你錯了。這是完美的工作。檢查[文檔頁面](http://php.net/isset)上的示例(具體爲**檢查更深的數組值**)並自行嘗試。 – Jocelyn

+0

@JosephSilber我在我的答案中添加了一個PHP小提琴鏈接,以證明我的語法正在工作,不必按照您的想法進行更改。 – Jocelyn