如何根据条件在PHP中搜索数组

时间:2017-12-28 19:57:31

标签: php mysql arrays

如果我有这样的数组:

 $cars = array (
 array("name"=>"jeep","Year"=>"2012"),
 array("name"=>"ferrari","Year"=>"2017"),  
 array("name"=>"jaguar","Year"=>"2013")
);

如何打印$cars['name'] $cars[Year] = 2013,这是否可以在数组中实现,就像在MySQL中一样?正如我们对MySQL所知,我们可以这样做:

select * from table where //condition

那么,如何在数组中完成这项工作?

4 个答案:

答案 0 :(得分:0)

你可以循环遍历数组中的每个元素,如果年份是2013,则使用'if'语句回显汽车的名称

control + d

答案 1 :(得分:0)

您可以使用array_filter()并将条件函数作为第二个参数与数组一起传递。以你的情况为例:

function filterArray($value){
    if($value['Year'] == "2013")
         return $value['name'];
}

$filteredArray = array_filter($fullArray, 'filterArray');

因此,如果我们传递的数组看起来像:

 $fullArray = array (
 array("name"=>"John","Year"=>"2012"),
 array("name"=>"Doe","Year"=>"2017"),  
 array("name"=>"Martin","Year"=>"2013")
);

输出将是:

Array
(
    [2] => Array
        (
            [name] => Martin
            [Year] => 2013
        )

)

答案 2 :(得分:0)

还有array_filter的解决方案,因为你可能会有多辆同年的汽车。

$cars = array (
 array("name"=>"jeep","Year"=>"2012"),
 array("name"=>"ferrari","Year"=>"2017"),  
 array("name"=>"jaguar","Year"=>"2013")
);

$filtered_cars = array_filter($cars, function ($item) {
    return $item['Year'] === '2013';
});

print_r(current($filtered_cars)['name']);

答案 3 :(得分:0)

isFromYear函数接受年份作为参数的示例:

<?php
$cars = array (
     array("name"=>"jeep","Year"=>"2012"),
     array("name"=>"ferrari","Year"=>"2017"),
     array("name"=>"jaguar","Year"=>"2013")
);

class YearFilter {
    private $year;

    function __construct($year) {
            $this->year = $year;
    }

    function isFromYear($i) {
            return $i["Year"] == $this->year;
    }
}

$matches = array_filter($cars, array(new YearFilter("2013"), 'isFromYear'));
print_r($matches);

?>