2017-12-28 2 views
0

suchen, wenn ich ein Array wie diese:Wie ein Array in PHP Stationierung auf einem Zustand

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

Wie ein drucken $cars['name'] wo $cars[Year] = 2013, ist das möglich in der Anordnung, wie wir in MySQL tun? Wie wir mit MySQL wissen, können wir tun:

select * from table where //condition 

Also, wie kann dies in Arrays getan werden?

+0

Wenn Sie wirklich SQL-Stil Syntax verwenden müssen, dann müssen Sie eine Implementierung von LINQ in PHP, sonst nur verwenden [ array_filter()] (http://php.net/manual/en/function.array-filter.php) –

Antwort

0

Sie könnten Schleife durch jedes Element in dem Array und unter Verwendung einer ‚if‘ Anweisung den Namen des Autos Echo, wenn das Jahr 2013 ist

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

foreach ($cars as $value) { 

    if($value[Year] == 2013){ 
    echo $value[name] ."<br>"; 
    } 
} 
0

Sie array_filter() verwenden können, und übergeben Sie eine bedingte Funktion als das zweite Argument zusammen mit Ihrem Array. Als Beispiel in Ihrem Fall:

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

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

Wenn wir also ein Array übergeben, die wie folgt aussieht:

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

Ausgabe wäre: mit array_filter, weil Sie

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

) 
0

Und auch Lösung wird wahrscheinlich mehrere Autos mit demselben Jahr haben.

$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']); 
0

Ein Beispiel mit der isFromYear Funktion das Jahr als Parameter akzeptieren:

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

?>