如果一个键在数组中不存在,我怎么能忽略这个错误


If a key dont exist in array how can I ignore the error

我需要一些帮助与数组。我运行一个基于网页的游戏,我需要给一些值一个简短的描述。只要键存在于数组中,这就没有问题,如果用户拥有的键不在数组中,则输出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 ?>