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