2014-09-25 106 views
0

所以我有一个数组象下面这样:如何基于数组中的值显示数组列表?

Array 
(
[0] => Array 
    (
     [model] => COROLLA 
     [trim] => L 
     [msrp] => 16,800 
     [type] => car 
    ) 

[1] => Array 
    (
     [model] => COROLLA 
     [trim] => LE 
     [msrp] => 18,300 
     [type] => car 
    ) 

我需要能够调用类型的所有独特的价值观和遍历它们将其返回仿佛类型为一类。所以,我需要让所有的车“作为一种类型另一份与“范”的所有车辆的类型等车辆我这得到唯一值的列表:

$type = array(); 
    foreach($cars as $car){ 
    $type[] = $car['type']; 
    } 
$type = array_unique($type); 

我如何搜索它们的值并返回顶层数组真的遇到了一堵墙。我知道这是基本的,但我很挣扎。

+1

可否请你改一下你想要什么? (例如,提供示例输出将有很大帮助) – bwoebi 2014-09-25 22:01:33

+0

也可以查看http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – 2014-09-25 22:18:03

回答

2

下面的代码将导致一个阵列组的车辆按类型:

$vbt = array(); 
foreach ($cars as $car) 
{ 
    $vbt[ $car['type'] ][] = $car; 
} 

所以,现在你有一个数组,看起来像这样:

/* 
$vbt == Array 
(
    [car] => Array 
    (
     [0] => Array 
     (
      [model] => COROLLA 
      [trim] => L 
      [msrp] => 16,800 
      [type] => car 
     ) 

     [1] => Array 
     (
      [model] => COROLLA 
      [trim] => LE 
      [msrp] => 18,300 
      [type] => car 
     ) 
    ) 

    [van] => Array 
    (
     [0] => Array 
     (
      [model] => ODYSSEY 
      [trim] => L 
      [msrp] => 16,800 
      [type] => van 
     ) 
    ) 
) 
*/ 

从这个结构,你可以访问任何如果您有类型的车辆列表,例如,获得所有type == van您将要做的排列:

$vans = $vbt['van']; 

/* 
$vans == Array 
(
    [0] => Array 
    (
     [model] => ODYSSEY 
     [trim] => L 
     [msrp] => 16,800 
     [type] => van 
    ) 
) 
*/ 

如果你已经知道的类型,你只是想获得该类型的车辆的清单:

$vehicles = array(); 
$searchType = 'car'; 
foreach ($cars as $car) 
{ 
    if ($car['type'] == $searchType) 
    { 
     $vehicles[] = $car; 
    } 
} 


/* 
$vehicles == Array 
    (
     [0] => Array 
     (
      [model] => COROLLA 
      [trim] => L 
      [msrp] => 16,800 
      [type] => car 
     ) 

     [1] => Array 
     (
      [model] => COROLLA 
      [trim] => LE 
      [msrp] => 18,300 
      [type] => car 
     ) 
    ) 
*/ 
0

如果你有PHP> = 5.5.0你可以用自己的钥匙这样的关联的类型:

$cars_types = array_column($cars, 'type'); 

然后,你可以排序的类型和循环它访问$cars阵列:

asort($cars_types); 

foreach($cars_types as $key => $type) { 
    echo $type; // or $cars[$key]['type'] 
    echo $cars[$key]['model']; 
    //etc 
}