0

私はこのような多次元php配列を持っています

Array
(
    [0] => Array
        (
            [size] => M
            [colour] => black
            [quantity] => 10
        )

    [1] => Array
        (
            [size] => S
            [colour] => blue
            [quantity] => 10
        )

)

そして、私はこのような別の配列を持っています

Array
(
    [size] => M
    [colour] => black
)

2番目の配列に一致する配列を見つけるために、最初の配列を横断するにはどうすればよいですか?. これについてどうすればいいのかまったくわかりません。ありがとう

4

5 に答える 5

2

別のアプローチを取る:

$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 は結果に関係なく数量を返すため、一致するサイズと色だけをチェックする必要があります。

于 2012-09-30T11:42:09.910 に答える
1

これを試してください

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

于 2012-09-30T11:27:48.207 に答える
1

最初の配列が「mainarray」で、2 番目の配列が「comparearray」であるとします。

$result = array();
    foreach($mainarray as $marray)
    {
      if($marray['size'] == $comparearray['size'] && $marray['colour'] == $comparearray['colour'])
    {
       $result = $marray;
    //echo "match found";
    }
    }

注: 比較配列が単一配列の場合、適用可能です。それも多次元配列の場合は、その配列にも foreach を配置する必要があります。

于 2012-09-30T11:20:59.530 に答える
0

例えば:

$array1 は最初の配列で、$array2 は 2 番目の配列です。それで :

$result = array();
foreach ($array1 as $subarray)
{
    $check = array_diff($subarray, $array2);
    if (empty($check)) {
        $result = $subarray;
    }
}
于 2012-09-30T11:38:05.103 に答える
0

試す

$result = array();
foreach ($multi_array as $arr) {
  if ($arr['size'] == $one_dimen_arr['size'] && $arr['colour'] == $one_dimen_arr['colour']) {
    $result = $arr;
    break;
  }
}
于 2012-09-30T11:21:01.793 に答える