Поиск многомерного массива php по ключу
У меня есть многомерный массив PHP, как это
Array
(
[0] => Array
(
[size] => M
[colour] => black
[quantity] => 10
)
[1] => Array
(
[size] => S
[colour] => blue
[quantity] => 10
)
)
и у меня есть другой массив, как это
Array
(
[size] => M
[colour] => black
)
Как мне перейти к первому массиву, чтобы найти массив, который соответствует второму? Я абсолютно не знаю, как это сделать. Спасибо
5 ответов
Рассмотрим первый массив "mainarray", а второй - "Comparearray"
$result = array();
foreach($mainarray as $marray)
{
if($marray['size'] == $comparearray['size'] && $marray['colour'] == $comparearray['colour'])
{
$result = $marray;
//echo "match found";
}
}
примечание: если массив сравнения является одним массивом, он применим. если это также многомерный массив, вы должны также указать foreach для этого массива.
Принимая другой подход:
$multiArray = array(array('size' => 'M',
'color' => 'black',
'quantity' => '10'),
array('size' => 'S',
'color' => 'blue',
'quantity' => 10));
$otherArray = array('size' => 'S',
'color' => 'blue',
'quantity' => 10)
$message = "Match not found!";
foreach($multiArray as $array) {
$result = array_diff($array, $otherArray);
if(isset($result['size']) or isset($result['color'))
continue;
else
$message = "Found a match!\n Size: {$array['size']}\n Color: {$array['color']}\n Quantity: {$array['quantity']}";
}
echo $message;
Это решение кажется мне правильным, потому что из вашего примера я предполагаю, что вы пытаетесь найти количество. Следовательно, array_diff будет возвращать количество в результате независимо от того, что необходимо, чтобы проверить только размер и цвет для соответствия.
Попробуй это
<?php
$arr1 = array(array("size"=>"M","colour" => "black"),array("size"=>"S","colour" => "blue"));
$arr2 = array("size"=>"M","colour" => "black");
print_r($arr1);
print_r($arr2);
foreach($arr1 as $array)
{
if($array['size'] == $arr2['size'] && $array['colour'] == $arr2['colour'])
{
echo "matches";
}
}
?>
рабочий пример http://codepad.org/iQPxSHKd
Например:
$ array1 - это ваш первый массив, а $array2 - ваш второй массив. Затем:
$result = array();
foreach ($array1 as $subarray)
{
$check = array_diff($subarray, $array2);
if (empty($check)) {
$result = $subarray;
}
}
Пытаться
$result = array();
foreach ($multi_array as $arr) {
if ($arr['size'] == $one_dimen_arr['size'] && $arr['colour'] == $one_dimen_arr['colour']) {
$result = $arr;
break;
}
}