繁体   English   中英

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过滤中使用&&对带有设置值的主数组进行排序,但是我不知道如何对动态值使用它。 国家/地区排序可以有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);
    }
}

你可以这样做:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM