AS3或PHP-如何从另一个数组中筛选具有多个值的数组


AS3 or PHP - How to filter an array with multiple values from another array?

有人能帮我吗。想象一下,你有一个列出葡萄酒的索引数组,每种葡萄酒都有名称、制造商、原产国、价格和年份。

var wines:Array = new Array(); 
wines = [ 
{winename:"Baron des Lougres", country:"France", year:"2008", price:"20.00", manufacture:"Le Yeats"},
{winename:"Barefoot Sauvignon", country:"USA", year:"2012", price:"12.00", manufacture:"Big Vines"},
]

显然,索引数组/数据库中有更多葡萄酒。

我希望用户能够申报,例如,一个制造商,一年,然后选择一些国家(智利,阿根廷,美国)。我必须用一系列选定的国家来筛选葡萄酒。我知道如何使用&在if过滤中,但我不知道如何将其与动态值一起使用。country排序可以有1到10个或更多的值,它的长度是动态的。我想在数组/数据库中有2000多种葡萄酒,所以我想要一个尽可能简洁的代码CPU-lite。

返回的值将仅来自选定的国家。是否可以用数组作为条件来编写IF语句,或者我必须用另一种方式来完成它?

类似于:

for (var i:uint = 0; i < wines.length; i++) 
    if (wines.year == selected_year 
&& wines.manufacture == selected_manufacture
&& wines[i].country == selected_countries_array)
{
    trace(wines[i].name);
    }
}

更新

下面的答案来自bwroga。它看起来与上面的代码有点不同,但这只是因为我在他回答这个问题后编辑了这个问题。但他的代码,indexOf部分运行得很完美。谢谢你,布沃加。我尝试了以下操作,结果成功了!:)

for (var i:uint = 0; i < wines.length; i++) 
    if (wines.year == selected_year 
&& wines.manufacture == selected_manufacture
&& selected_countries_array.indexOf(wines[i].country != -1)
{
    trace(wines[i].name);
    }
}

您可以这样做:

// Actionscript
if(year == selected_year && 
   manufacture == selected_manufacture && 
   selected_counties_array.indexOf(country) !== -1
){
//action
}

如果国家/地区位于selected_countries_array中,indexOf将返回该数组中国家/地区的索引。如果它不在数组中,则返回-1。

在PHP中,您可以这样做:

// Php
if($year == $selected_year && 
   $manufacture == $selected_manufacture && 
   in_array($country, $selected_counties)
){
//action
}