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
Post a Comment