0

我创建了一个由我的 MySQL 数据库中的记录组成的数组。它包含大量配方,包括“嵌套”数组。

我允许用户在数组中搜索多个术语然后只显示符合条件的数组的最佳方法是什么?或者我应该尝试为每个搜索构建特定的数组?

这是数组的示例输出:

对不起,我不知道如何很好地显示这个......

35 => 
    array (size=17)
      'id' => string '35' (length=2)
      'name' => string 'Yummy stuff!!' (length=13)
      'recipeType' => string 'Appetizer' (length=9)
      'photo' => string 'url/recipe.gif' (length=31)
      'thumbnail_uri' => string '' (length=0)
      'published' => string '2002-04-03 00:00:00' (length=19)
      'summary' => string 'The summary of the recipe is that it is really good!' (length=52)
      'review' => string 'The review of this recipe is awesome! More please!' (length=50)
      'prepTime' => string '70' (length=2)
      'cookTime' => string '30' (length=2)
      'totalTime' => string '140' (length=3)
      'nutrition' => string 'No calories here.' (length=17)
      'instructions' => string 'I instruct you to cook it long and good, until it's warm' (length=60)
      'yield' => string 'It yields enough for me and you.' (length=32)
      'ingredient' => string '2 apples, one banana, and 18 lemons' (length=35)
      'author' => string 'John Sample Man' (length=12)
      'dietary_restrictions' => 
        array (size=2)
          6 => string 'Low fat' (length=7)
          7 => string 'Grain Free' (length=10)
36 => 
    array (size=17)
      'id' => string '36' (length=2)
      'name' => string 'A good recipe' (length=13)
      'recipeType' => string 'Appetizer' (length=9)
      'photo' => string 'url/recipe.gif' (length=31)
      'thumbnail_uri' => string '' (length=0)
      'published' => string '2002-04-03 00:00:00' (length=19)
      'summary' => string 'The summary of the recipe is that it is really good!' (length=52)
      'review' => string 'The review of this recipe is awesome! More please!' (length=50)
      'prepTime' => string '70' (length=2)
      'cookTime' => string '30' (length=2)
      'totalTime' => string '140' (length=3)
      'nutrition' => string 'No calories here.' (length=17)
      'instructions' => string 'I instruct you to cook it long and good, until it's warm' (length=60)
      'yield' => string 'It yields enough for me and you.' (length=32)
      'ingredient' => string '2 apples, one banana, and 18 lemons' (length=35)
      'author' => string 'John Sample Man' (length=12)
      'dietary_restrictions' => 
        array (size=2)
          4 => string 'Gluten-Free' (length=11)
          7 => string 'Grain Free' (length=10)
4

2 回答 2

0

你想做一个嵌套数组搜索,这个问题及其答案有很多解决问题的方法。

于 2013-01-28T00:36:09.103 回答
0

看看array_filter()。您可以使用它来检查当前条目是否与搜索词匹配,如下所示:

$search = Array(
    "recipeType"=>"Appetizer",
    "dietary_restrictions"=>"Low fat"
);
$results = array_filter($big_array,function($e) use ($search) {
    foreach($search as $k=>$v) {
        if( is_array($e[$k])) {
            if( !array_search($v,$e[$k])) return false;
        }
        elseif(strcasecmp($v,$e[$k]) != 0) return false;
    }
    return true;
});
于 2013-01-28T00:37:16.280 回答