میخای خونه ها رو چک کنی یا مقادیر رو چک کنی ؟
مثلا داری
"a"=>"red"
آیا میخای ببینی مقدار red تو کدوم آرایه ها تکرار شده بدون اینکه خونه مهم باشه
یا میخای ببینی کدوم آرایه ها خونه a آنها برابر با red هستش
یا فرقی نمیکنه هردوش ؟!
حالت اول
$result = [] ;
$stack = [
'a1' => ["a"=>"red","b"=>"green","c"=>"blue","d"=>"yell ow"] ,
'a2' => ["a"=>"red","b"=>"green","g"=>"blue"] ,
'a3' => ["a"=>"red","b"=>"green","g"=>"blue"] ,
];
function check_array( $value , $stack , $result ){
foreach ($stack as $k=>$array )
{
if(in_array( $value , $array))
{
if(isset($result[$value]) && !in_array( $k , $result[$value]))
$result[$value][] = $k ;
else
$result[$value] = [$k] ;
}
}
return $result ;
}
foreach ($stack as $array )
{
foreach ($array as $k=>$v )
$result = check_array( $v , $stack , $result );
}
echo "<pre>";
print_r($result);
echo "</pre>";
خروجی
Array
(
[red] => Array
(
[0] => a1
[1] => a2
[2] => a3
)
[green] => Array
(
[0] => a1
[1] => a2
[2] => a3
)
[blue] => Array
(
[0] => a1
[1] => a2
[2] => a3
)
[yellow] => Array
(
[0] => a1
)
)
حالت دوم
$result = [] ;
$stack = [
'a1' => ["a"=>"red","b"=>"green","c"=>"blue","d"=>"yell ow"] ,
'a2' => ["a"=>"red","b"=>"green","g"=>"blue"] ,
'a3' => ["a"=>"black","b"=>"green","g"=>"blue"] ,
'a4' => ["a"=>"black","b"=>"green","g"=>"blue"] ,
];
function check_array( $key , $value , $stack , $result ){
if(!isset($result[$key]))
$result[$key] = [] ;
$inner_stack = [] ;
foreach ($stack as $k=>$array )
{
if(isset($array[$key]))
$inner_stack[$k] = $array[$key];
}
foreach ($inner_stack as $k=>$v)
{
if(!isset($result[$key][$v]))
$result[$key][$v] = [];
if(!in_array( $k , $result[$key][$v] ))
$result[$key][$v][] = $k ;
}
return $result ;
}
foreach ($stack as $array )
{
foreach ($array as $k=>$v )
$result = check_array( $k , $v , $stack , $result );
}
echo "<pre>";
print_r($result);
echo "</pre>";
خروجی
[a] => Array
(
[red] => Array
(
[0] => a1
[1] => a2
)
[black] => Array
(
[0] => a3
[1] => a4
)
)
[b] => Array
(
[green] => Array
(
[0] => a1
[1] => a2
[2] => a3
[3] => a4
)
)
[c] => Array
(
[blue] => Array
(
[0] => a1
)
)
[d] => Array
(
[yellow] => Array
(
[0] => a1
)
)
[g] => Array
(
[blue] => Array
(
[0] => a2
[1] => a3
[2] => a4
)
)