【问题标题】:To use names when using foreach to loop multidimensional arrays?使用 foreach 循环多维数组时使用名称?
【发布时间】:2013-10-12 09:14:36
【问题描述】:

我正在尝试做一个网站(不要问它是什么),我需要帮助。 我创建了这个名为meallist.php 的页面:

<?php
/* Ingredients List */
$meatlist = array(tavuketi => "Tavuk Eti",
                  baliketi => "Balık Eti");

$vegelist = array(domates => "Domates",
                  patates => "Patates",
                  salatalik => "Salatalık");

/* The Meals - dun dun duuuunnnnnn */

$yemekaralist = array(mangaldatavuk => array(
                                             name => "Mangalda Tavuk",
                                             ing1 => tavuketi),
                      mangaldapatateslitavuk => array(    
                                             name => "Mangalda Patatesli Tavuk",
                                             ing1 => tavuketi,
                                             ing2 => patates),
                      mangaldabalik => array(
                                             name => "Mangalda Balık",
                                             ing1 => baliketi),
                      firindapatateslibalik => array(
                                             name => "Fırında Patatesli Balık",
                                             ing1 => baliketi,
                                             ing2 => patates));

?>

你明白了。我在 index.php 上创建了一个 foreach 循环,它创建了一个选择:

<div id="etler">
<select multiple="multiple" name="selectMeal[]" size="4" data-max-length="30">
<?php
foreach($meatlist as $id => $name)
{
    print "<option value=\"" . $id . "\">" . $name . "</option>";
}

?>
</select>
</div>
<div id="sebze">
<select multiple="multiple" name="selectMeal[]" size="4" data-max-length="30">
<?php
foreach($vegelist as $id1 => $name1)
{
    print "<option value=\"" . $id1 . "\">" . $name1 . "</option>";
}

?>
</select>
</div>

它会发布 selectMeal[] 并将其放入 searchmeal.php 中的 $search 中。我想要的是,我希望它搜索 meallist.php 中的 $yemekaralist 并检查 ing1 (如果可用,则 ing2 )是否与 selectMeal[] 数组匹配,如果可用则打印 name => "something"。我该怎么做?

最好的问候, 任务712

【问题讨论】:

  • 你不需要在数组定义中使用字符串而不是常量吗? $meatlist = array('tavuketi' =&gt; "Tavuk Eti", 'baliketi' =&gt; "Balık Eti");
  • 是的,你是对的。我对php不是很先进。 :)

标签: php arrays multidimensional-array foreach include


【解决方案1】:

你能改变$yemekaralist的结构吗?

如果你改变这样的结构,它会简化你的算法:

$yemekaralist = array(
    item1 => array(
        'name' => 'item1_name',
        'ingredients' => array('tavuketi', 'patates'),
    ),
    item2 => array(
        'name' => 'item2_name',
        'ingredients' => array('tavuketi', 'patates'),
    ),

然后像这样:

foreach ($yemekaralist as $item) {
    foreach ($item['ingredients'] as $ingredient) {
        foreach ($selectMeal as $selectedMeal) {
            if ($selectedMeal == $ingredient) {
                echo $item['name'];
            }
        }
    }
}

【讨论】:

  • 你先生,让我很开心。但我想问1个问题。它现在在 selectMeal[] 等于 $ingredient 时显示结果。我该如何解决这个问题?
  • 我不明白...你到底想显示什么?
  • 对不起,我一直很忙。我想在 selectMeal[] 中显示仅 包含 成分的项目。另一方面,如果 selectMeal[] 确实包含 tavuketi 但 not 包含 patates 等,则不会显示类似 mangaldapatateslitavuk。我可以用 in_array() 做到这一点吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-26
  • 1970-01-01
  • 2015-06-02
  • 2015-05-08
  • 1970-01-01
  • 1970-01-01
  • 2022-12-17
相关资源
最近更新 更多