AS3或PHP - 如何使用另一个数组中的多个值过滤数组?

时间:2013-02-22 13:21:42

标签: php arrays actionscript-3 sorting filter

任何人都可以帮助我。想象一下,你有一个Indexed数组,列出了葡萄酒,每个葡萄酒都有一个名称,制造商,原产国,价格和一年。

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"},

]

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

我希望用户能够提交制造商,例如制造商,年份,然后选择一些国家(辣椒,阿根廷,美国)。我必须用一系列选定的国家过滤葡萄酒阵列。我知道如何使用&&amp ;;对设定值对主阵列进行排序在if过滤但我不知道如何使用动态值。国家/地区排序可以有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部分完美无缺。谢谢bwroga。我尝试了下面的工作! :)

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);
    }
}

1 个答案:

答案 0 :(得分:1)

你可以这样做:

// 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
}