我正在尝试制作一个函数,它将遍历多维数组,并且仅当它们在所有数组中都相同时才能获得键=>对的值。
我的意思是?
如果你看一下我的例子,你会发现在所有的数组中,带有"Glavna Instanca"的键是如何具有相同的值的,而且它是VR1。同样,值为"F2"的"Druga Instanca"也是如此。
对于键"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
);
);
}任何形式的帮助都将不胜感激!
提前感谢
发布于 2015-03-21 00:06:22
这里有一个快速而肮脏的解决方案:
$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);希望这能有所帮助。
https://stackoverflow.com/questions/29167939
复制相似问题