PHP Compare two arrays multidimensional and simple -


i have 2 arrays

$matchingskusarr = array( 0 => array(1235 => 171), 1 => array(1235 => 172),2 => array(180 => 200),3 => array(180 => 807),4 => array(125 => 200),5 => array(131 => 200)) ; 

$ordersku = array(0=>807, 1=>200,2=>171,3=>172);

function yourmatch($orderskusarr, $matchingskusarr) {      $columns = [];       foreach ($matchingskusarr $array) {         foreach ($array $key => $value) {             //column tested continue             if(isset($columns[$key])) {                 continue;             }             //new column need check if matches our $skus             $columns[$key] = array_column($matchingskusarr, $key);             if($columns[$key] == $orderskusarr) {                 return [$key => $columns[$key]];                                 }              else             {                            return $columns;                         }          }        }            }  print_r(yourmatch($orderskusarr, $matchingskusarr)); 

** function not return correct result result should **

array(1235 => array(0 => 171,1 => 172),180 => array(0 => 803,1 => 200); 

if understand right want achieve, may work you. please note values may repeat in output if found twice in $matchingskuarr, e.g. 200. avoid (do want to?) you'll need store index of unique values in variable.

$matchingskusarr = array( 0 => array(1235 => 171), 1 => array(1235 => 172),2 => array(180 => 200),3 => array(180 => 807),4 => array(125 => 200),5 => array(131 => 200)) ; $ordersku = array(0=>807, 1=>200,2=>171,3=>172);  $columns = []; $uniquesku = []; foreach ($matchingskusarr $array) {     foreach ($array $key => $value) {         // check duplicity.         if (in_array($value, $uniquesku)) {             continue;         }         // if $value contained in $ordersku, save output.         if (in_array($value, $ordersku)) {             // initialize array.             if (!isset($columns[$key])) {                 $columns[$key] = [];             }             // store value found.             $columns[$key][] = $value;             $uniquesku[] = $value;         }     } }     print_r($columns); 

the output be:

array (     [1235] => array         (             [0] => 171             [1] => 172         )      [180] => array         (             [0] => 200             [1] => 807         ) ) 

Comments