我需要一些帮助与数组。我运行一个基于网页的游戏,我需要给一些值一个简短的描述。只要键存在于数组中,这就没有问题,如果用户拥有的键不在数组中,则输出Undefined offset
错误。有一些键不会在数组中,但我怎么能忽略它们,不打印错误?
$storage_values = array(35000 => "Använde sin list och besegrade Ahmaroth",
71503 => "Avslutade uppgiften att dräpa 250 vargar",
56431 => "Avslutade uppgiften att dräpa 300 drakar",
and alot more);
$storage = $db->query("SELECT `key` FROM user_storage WHERE userid = 69")->fetch();
<? if (array_key_exists($storage['key'], $storages)): ?>
<? foreach($db->query("SELECT `key`, `date` FROM user_storage WHERE user_id = 69") as $row): ?>
<tr>
<td>Date</td>
<td><?=$storages[$row['key']]?></td>
</tr>
<? endforeach ?>
<? endif ?>
现在如果在user_storage中有一个键,它不存在于数组中,我得到偏移错误,我怎么能忽略它们,只打印出存在于数组中的键?
我已经尝试在$storage [$row['key']]之前添加@,这消除了偏移错误,但它仍然打印出空的<td>
元素
我希望你能理解,并提前感谢。
和
if(isset($storages[$row['key']])){ ?>
<tr>
<td>Date</td>
<td><?=$storages[$row['key']]?></td>
</tr>
<?php }
您可以尝试下面的代码
<? if (array_key_exists($storage['key'], $storages)): ?>
<? foreach($db->query("SELECT `key`, `date` FROM user_storage WHERE user_id = 69") as $row): ?>
<? if (isset($storages[$row['key']])): ?>
<tr>
<td>Date</td>
<td><?=$storages[$row['key']]?></td>
</tr>
<? endif ?>
<? endforeach ?>
<? endif ?>