идея манипулирования массивом - PullRequest
0 голосов
/ 28 марта 2012

У меня есть два массива.

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

и второй массив -

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'
    )

)

Теперь я хочу посмотреть, какие машины есть в наличии или нет на основе первого и второго массива.Так что для Кобальта он вернет меня на складе, где, как на проводнике, он вернет меня на складе.А для Mazda он может повторить «Не переносить», где я запутался, где или нет, чтобы взорвать массив [1] косой чертой «/», а затем посмотреть на него.Есть ли другой более простой / быстрый способ сделать это.спасибо

Ответы [ 2 ]

2 голосов
/ 29 марта 2012

Попробуйте это:

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

Это напечатает:

Array
(
    [Maza] => Do not care
    [Nissan] => In Stock
    [Tacoma] => In stock
    [Cobalt] => In Stock
    [Explorer] => Out of Stock
)
2 голосов
/ 28 марта 2012

Может быть

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

это напечатало бы In Stock, если автомобиль не был найден, он просто ничего не возвращает.

...