首页 > 解决方案 > 如何根据另一个值更改使用哪个变量

问题描述

我正在尝试做一个有趣的副项目,并在一个小问题上停下来。我试图将 echo 命令放在 while 和 mysqli_fetch_assoc 命令中,因为每次页面刷新时数据都会从表随机函数中选择。

我选择这样的随机项目:

$survivor_set = random_survivor();
$item_set = random_item();
$firstaidkitaddon_set = random_firstaidkitaddon();
$flashlightaddon_set = random_flashlightaddon();
$keyaddon_set = random_keyaddon();
$mapaddon_set = random_mapaddon();
$toolboxaddon_set = random_toolboxaddon();
$survivoroffering_set = random_survivoroffering();

问题代码行如下所示:

<?php while($toolboxaddon = mysqli_fetch_assoc($toolboxaddon_set)) { ?>

但是我需要$改变之后的话,所以正在寻找这样的东西:

<?php while($ echo h($item['item']);addon = mysqli_fetch_assoc($ echo h($item['type']);addon_set)) { ?>

这可能解释得不好,如果有人能借一些时间来帮助我,我可以更详细地展示我到底想要完成什么,我将不胜感激。

该代码显示了从表中选择的随机项目。

<?php while($item = mysqli_fetch_assoc($item_set)) { ?> 
  <?php echo h($item['name']);?> E.g. Engineers Toolbox 
  <?php echo h($item['rarity']);?> E.g. veryrare 
  <?php echo h($item['type']);?> E.g. toolbox 
  <?php echo h($item['media']);?> E.g. engineerstoolbox.png 
<?php } ?> 

然后我试图找到一种方法将其echo h($item['type'])放入下一个输出中。所以当它是一个工具箱时它看起来像这样。

<?php while($toolbox = mysqli_fetch_assoc($toolbox_set)) { ?>

但是由于它是被拉出的不同项目类型,因此可能会发生变化:

<?php while($flashlight = mysqli_fetch_assoc($flashlight_set)) { ?>

完整代码,上下文:https ://zerobin.net/?9f772676aa87df3f#Gxy43WGqShTkL/VG42+t3nT4+sxGhxFy+GDB0B3+YH0=

标签: phparraysmysqliecho

解决方案


您应该将所有不同的附加结果存储在关联数组中,其中键与主项目查询中可能的“类型”值匹配。这允许您使用字符串从数组中选择一个项目以引用其键 - 您可以从$item['type']变量中获取该字符串值。

例如

$survivor_set = random_survivor();
$item_set = random_item();

$addons = array(
  "firstaid" => random_firstaidkitaddon(),
  "flashlight" => = random_flashlightaddon(),
  "key" = random_keyaddon(),
  "map" = random_mapaddon(),
  "toolbox" => random_toolboxaddon()
);

$survivoroffering_set = random_survivoroffering();

然后稍后您可以通过选择匹配的索引从关联数组中选择正确的结果集$item['type']

<div class="itemaddonscontainer">
  <div class="<?php echo h($item['type']);?>">
    <?php while($addon = mysqli_fetch_assoc($addons[$item['type']])) { ?>
      <img class="<?php echo h($addon['rarity']);?> survivor-item" src="imgs/survivor/itemaddon/<?php echo h($addon['media']);?>"/>
    <?php } ?>
  </div>
</div>

NBmysqli_free_result在这里可能没有必要。


推荐阅读