我试图通过多维数组创建函数并获取键=>只有当它们相同时才对值 所有数组。
我的意思?
如果您查看我的示例,您会看到"Glavna Instanca"
的键在所有数组中具有相同的值,它是VR1
。
此外,同样的故事适用于"Druga Instanca"
,其值为"F2"
。
对于键"Treca Instanca"
和"Cetvrta Instanca"
,我们有不同的值,并且值必须位于键"differentValues"
下。
<?php
Array
(
[0] = Array
(
[itemi] = Array
(
[0] = Array
(
[Glavna Instanca] = VR1
[Druga Instanca] = F2
[Treca Instanca] = VR3
[Cetvrta Instanca] = D4
)
[1] = Array
(
[Glavna Instanca] = VR1
[Druga Instanca] = F2
[Treca Instanca] = VR3
[Cetvrta Instanca] = D4
)
[2] = Array
(
[Glavna Instanca] = VR1
[Druga Instanca] = F2
[Treca Instanca] = VR333
[Cetvrta Instanca] = D444
)
[3] = Array
(
[Glavna Instanca] = VR1
[Druga Instanca] = F2
[Treca Instanca] = VR333
[Cetvrta Instanca] = D4
)
);
);
);
?>
新数组必须是这样的:
$newArray = array(
[Glavna Instanca] = VR1
[Druga Instanca] = F2
[differentValues] =>
array(
'0' =>
array(
[Treca Instanca] = VR3
[Cetvrta Instanca] = D4
);
'1' =>
array(
[Treca Instanca] = VR3
[Cetvrta Instanca] = D4
);
'2' =>
array(
[Treca Instanca] = VR333
[Cetvrta Instanca] = D444
);
'3' =>
array(
[Treca Instanca] = VR333
[Cetvrta Instanca] = D4
);
);
}
任何形式的帮助将不胜感激!
提前致谢
答案 0 :(得分:0)
这是一个快速而肮脏的解决方案:
$array = array(
array(
'itemi' => array(
array(
'foo' => 'bar',
'baz' => 'quz',
'ASD' => '1',
'DSA' => '11'
),
array(
'foo' => 'bar',
'baz' => 'quz',
'ASD' => '2',
'DSA' => '22'
),
array(
'foo' => 'bar',
'baz' => 'quz',
'ASD' => '3',
'DSA' => '33'
),
array(
'foo' => 'bar',
'baz' => 'quz',
'ASD' => '4',
'DSA' => '44'
),
array(
'foo' => 'bar',
'baz' => 'quz',
'ASD' => '5',
'DSA' => '55'
)
)
)
);
$cleanArray = array();
foreach ($array[0] as $mainKey => $mainValue) {
$a = true;
$b = true;
$c = true;
$d = true;
for ($i = 0; $i < count($mainValue); $i++) {
if (isset($mainValue[$i+1])) {
$a = ($a === true && ($mainValue[$i]['foo'] === $mainValue[$i+1]['foo'])) ? true : false;
$b = ($b === true && ($mainValue[$i]['baz'] === $mainValue[$i+1]['baz'])) ? true : false;
$c = ($c === true && ($mainValue[$i]['ASD'] === $mainValue[$i+1]['ASD'])) ? true : false;
$d = ($d === true && ($mainValue[$i]['DSA'] === $mainValue[$i+1]['DSA'])) ? true : false;
}
}
($a === true) ? $cleanArray['foo'] = $mainValue[0]['foo'] : null;
($b === true) ? $cleanArray['baz'] = $mainValue[0]['baz'] : null;
($c === true) ? $cleanArray['ASD'] = $mainValue[0]['ASD'] : null;
($d === true) ? $cleanArray['DSA'] = $mainValue[0]['DSA'] : null;
for ($i = 0; $i < count($mainValue); $i++) {
if ($a) {unset($mainValue[$i]['foo']);}
if ($b) {unset($mainValue[$i]['baz']);}
if ($c) {unset($mainValue[$i]['ASD']);}
if ($d) {unset($mainValue[$i]['DSA']);}
}
$cleanArray['differentValues'] = $mainValue;
}
var_dump($cleanArray);
希望有所帮助。