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

时间:2015-07-18 06:02:38

标签: php

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

我希望你提前理解和感谢。

2 个答案:

答案 0 :(得分:0)

类似

if(isset($storages[$row['key']])){ ?>
   <tr>
   <td>Date</td>
   <td><?=$storages[$row['key']]?></td>
   </tr>
<?php }

答案 1 :(得分:0)

您可以尝试以下代码

<? 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 ?>