如何使用php中的值在多维数组中选择数组

To put it right lets say I have an array stores-

array:3 [▼
  0 => "store3"
  1 => "store"
  2 => "store2"
]

This is the array which holds values.

Other array products holds all the data:-

array:2 [▼
  0 => array:2 [▼
    "store" => "store"
    "product" => "1"
  ]
  1 => array:2 [▼
    "store" => "store"
    "product" => "4"
  ]
  2 => array:2 [▼
    "store" => "store2"
    "product" => "2"
  ]
  3 => array:2 [▼
    "store" => "store2"
    "product" => "3"
  ]
  4 => array:2 [▼
    "store" => "store3"
    "product" => "7"
  ]
  5 => array:2 [▼
    "store" => "store3"
    "product" => "11"
  ]
]

What I want is that a value is picked from stores array eg store3 then it is compared with products array and being searched and extract all the arrays inside products array which has the store value store3 and store it in another new array named store3

I have tried to do it but it was very wrong I mean it didn't work! I will post it if anyone say so but can anyone accomplish this?

My work:-

$temp = array();
  for($i=0; $i<count($stores); $i++)
  {
    //$stores[$i] = array();

    foreach($products as $p)
    {
      if(session($stores[$i]) == $p['store'])
      {
        if(count(session($stores[$i])) == 0)
        {
          $temp['product'] = $p['product'];
          session($stores[$i])->push($temp['product']);
        }
        else if(!in_array($p['product'],$stores[$i]))
        {
          $temp['product'] = $p['product'];
          session($stores[$i])->push($temp['product']);
        }
      }
    }
  }

Do it like below:-

$final_array = array();
foreach($array1 as $arr){
  foreach($array2 as $arr2){
     if($arr == $arr2['store']){
       $final_array[$arr]['product'][] = $arr2['product'];
     }
  }
}
echo "<pre/>";print_r($final_array);

Output:-https://eval.in/752498

using array_walk

$array = [];
array_walk($products, function ($value, $key) use ($stores, &$array) {
    $array[$value['store']][] = $value['product'];
});

live sample : https://3v4l.org/BfeMm

using array filter

$store = 'store1';

$products = array_filter($products, function($product) use($store) {
    return (isset($product['store']) and $product['store'] == $store);
});

var_dump($products);

https://eval.in/752508

I made a simple function to find products in store

function searchProduct($products,$storeName){
    $results =array();
    foreach($products as $product){
        if(in_array($storeName,array_values($product)))
           $results[] = $product;    
    }
    return $results;
 }
 print_r(searchProduct($products,'store3'));