2012-03-28 2 views
0

Ich habe zwei Arrays.Array Manipulation Idee

$Array1 = array("Maza", "Nissan","Tacoma","Cobalt","Explorer"); 

und zweite Array ist

array(
    (int) 0 => array(
     (int) 0 => 'In Stock', 
     (int) 1 => 'Cars' 
    ), 
    (int) 1 => array(
     (int) 0 => 'In stock', 
     (int) 1 => 'Cars/Toyota/Tacoma' 
    ), 
    (int) 2 => array(
     (int) 0 => 'Out of Stock', 
     (int) 1 => 'Cars/Toyota/Celica' 
    ), 
    (int) 3 => array(
     (int) 0 => 'In Stock', 
     (int) 1 => 'Cars/Ford/Fusion' 
    ), 
    (int) 4 => array(
     (int) 0 => 'Out of Stock', 
     (int) 1 => 'Cars/Ford/Explorer' 
    ), 
    (int) 5 => array(
     (int) 0 => 'In Stock', 
     (int) 1 => 'Cars/Chevy/Cobalt' 
    ), 
    (int) 6 => array(
     (int) 0 => 'In Stock', 
     (int) 1 => 'Cars/Nissan' 
    ) 

) 

Jetzt will ich, was Autos auf Lager oder nicht auf der Grundlage der ersten und zweiten Reihe zu sehen. Also, für Cobalt, wird es mir auf Lager zurückgeben, wo es für Explorer, es mich aus dem Lager zurückgeben wird. Und für Mazda kann es "Do not carry" wiederholen. Wo ich verwirrt bin, ist es egal, ob ich das Array [1] mit dem Schrägstrich "/" explodieren soll und dann darauf schaue. Gibt es noch einen einfacheren/schnelleren Weg? Dank

+0

Was haben Sie versucht? Wie soll der Explorer "out of stock" zurückgeben, wenn zwei Instanzen "out of stock" und "in stock" anzeigen? – Josh

+0

Haben Sie das zweite Array so, wie Sie es haben? Ist es eine Option, ein anderes Datenmodell für die Verfügbarkeit von Fahrzeugen zu haben als das, was Sie dort zeigen? Wie oft suchen Sie die Verfügbarkeit von Fahrzeugen und wie oft Sie die Informationen aus dem zweiten Array "neu laden"? – Irfy

+0

behoben Explorer Problem und bearbeitet es – Autolycus

Antwort

2

Try this:

$cars = array("Maza", "Nissan","Tacoma","Cobalt","Explorer"); 
$stocks=array(
    (int) 0 => array(
     (int) 0 => 'In Stock', 
     (int) 1 => 'Cars' 
    ), 
    (int) 1 => array(
     (int) 0 => 'In stock', 
     (int) 1 => 'Cars/Toyota/Tacoma' 
    ), 
    (int) 2 => array(
     (int) 0 => 'Out of Stock', 
     (int) 1 => 'Cars/Toyota/Celica' 
    ), 
    (int) 3 => array(
     (int) 0 => 'In Stock', 
     (int) 1 => 'Cars/Ford/Fusion' 
    ), 
    (int) 4 => array(
     (int) 0 => 'Out of Stock', 
     (int) 1 => 'Cars/Ford/Explorer' 
    ), 
    (int) 5 => array(
     (int) 0 => 'In Stock', 
     (int) 1 => 'Cars/Chevy/Cobalt' 
    ), 
    (int) 6 => array(
     (int) 0 => 'In Stock', 
     (int) 1 => 'Cars/Nissan' 
    ) 

); 
$output=array(); 
foreach ($cars as $car) { 
    foreach ($stocks as $stock) { 
    if(in_array($car, explode('/', $stock[1]))){ 
     $output[$car]=$stock[0]; 
     break; 
     }else{$output[$car]='Do not care';} 
} 
} 
echo '<pre>'; 
print_r($output); 

Dies drucken:

Array 
(
    [Maza] => Do not care 
    [Nissan] => In Stock 
    [Tacoma] => In stock 
    [Cobalt] => In Stock 
    [Explorer] => Out of Stock 
) 
2

$Array1 = array("Maza", "Nissan","Tacoma","Cobalt","Explorer"); 
$secondarray = array(
    array('In Stock', 'Cars'), 
    array('In stock', 'Cars/Toyota/Tacoma'), 
    array('Out of Stock', 'Cars/Toyota/Celica'), 
    array('In Stock', 'Cars/Ford/Explorer'), 
    array('Out of Stock', 'Cars/Ford/Explorer'), 
    array('In Stock', 'Cars/Chevy/Cobalt'), 
    array('In Stock', 'Cars/Nissan')); 
function findcar($car, $secondarray) { 
    for($c = 0; $c <= count($secondarray); $c++) { 
     if(strpos(strtolower($secondarray[$c][1]), strtolower($car)) > 0) { 
       return $secondarray[$c][0]; 
     } 
    } 
} 

echo findcar($Array1[1], $secondarray); 

Vielleicht würde dies In Stock ausdrucken, wenn ein Auto nicht gefunden wurde es nichts nur zurückgibt.

+0

ja und Array hinzufügen: D – Dion

+0

Was ist $ Auto? eine Anordnung? – Autolycus

+0

was ist sekundär? – Autolycus