以下のプルされたデータは次のように返されます。
- x=1
- y=1
- z=1
- 値=3
しかし、最後の行var_dump($result_value);
が z なしで返されるように:
- x=1
- y=1
- 値=3
$result_value に 'z' があるために、ここで何が欠けていますか?
$pullMapInfo = "SELECT x, y, z, value FROM mapinfo WHERE id='{$player_id}'";
$pullMapInfo2 = mysql_query($pullMapInfo) or die($error[4]);
//create an array with all x, y, z
for ($y = 1; $y <= 16; $y++) $array_y[] = $y;
for ($x = 1; $x <= 16; $x++) $array_x[] = $x;
for ($z = 1; $z <= 3; $z++) $array_z[] = $z;
//create an associative array x, y, z => value
$result_value = array();
while ( $pullMapInfo3 = mysql_fetch_assoc($pullMapInfo2) ) {
$result_value[ $pullMapInfo3['x'] ][ $pullMapInfo3['y'] ][ $pullMapInfo3['z'] ] = $pullMapInfo3['value'];
}
//loop to display output
foreach ($array_z as $z) {
echo '<div class="container">';
foreach ($array_y as $y) {
foreach ($array_x as $x) {
if (array_key_exists($x, $result_value) && array_key_exists($y, $result_value[$x] )) {
echo '<div class="tileBox pos_',$result_value[$x][$y][$z] ,'" id="'.$x.','.$y.','.$z.'"></div>';
} else {
echo '<div class="tileBox pos_0" id="'.$x.','.$y.','.$z.'"></div>
';
}
}
}
echo '</div>';
}
var_dump($result_value);
#outputs: array(1) { [1]=> array(1) { [1]=> array(1) { [1]=> string(1) "3" } } }
#as it pulled data from database: x, y, value - it misses z!
テーブル構造: id INT(11)
x、y、z TINYINT(2)
値 VARCHAR(10)
var_dump($pullMapInfo3)
@Fluffehの場合:
bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) ... x768 (16x16x3)