我试图阻止每次循环时复制的项目数组。我认为独特的数组可以解决我的问题但它似乎没有工作。有替代方案还是我做错了什么?
这是我正在解析的数组。例如,包出现了好几次。我试着让它出现一次。
Array
(
[0] => bag
[1] => wallet
[2] => accessori
[3] => sunglass
[4] => clutch
[5] => tote
)
Array
(
[0] => handbag
[1] => faux
[2] => leather
[3] => bag
[4] => clutch
[5] => hobo
[6] => purs
[7] => wallet
[8] => tote
[9] => messeng
)
Array
(
[0] => bag
[1] => book
)
这是我的代码。
foreach($json as $keywords){
foreach($keywords as $keyword){
print_r(array_unique($keyword['keywords']));
}
}
提前谢谢。
答案 0 :(得分:0)
您可以先合并所有数组,然后执行array_unique
$a = array(
'bag',
'wallet',
'accessori',
'sunglass',
'clutch',
'tote'
);
$b = array(
'handbag',
'faux',
'leather',
'bag',
'clutch',
'hobo',
'purs',
'wallet',
'tote',
'messeng',
);
$c = array(
'bag',
'book',
);
$d = array_merge($a, $b, $c);
var_dump($d);
$u = array_unique($d);
var_dump($u);
比较变量$ d和$ u。
答案 1 :(得分:0)
我为multidimensial数组写了array_unique()函数 首先,我已经合并了所有数组,应用了array_unique(),然后重新组合了结果
<?php
$input = array( array('bag', 'wallet' ),
array('wallet', 'purs' ),
array('book', 'purs' )
);
print_r (arrayUniqueMultidimensial($input));
function arrayUniqueMultidimensial($input) {
$merged = array();
foreach ($input as $subArray) {
$merged = array_merge($merged, $subArray);
}
$filteredArray = array_unique($merged, SORT_STRING);
$segment = array(0); // segmentation
foreach($input as $subArray) {
$segment[] = $segment[count($segment)-1] + count($subArray);
}
$recomposed = array();
for($i=1 ; $i<count($segment) ; $i++) {
$startIndex = $segment[$i-1];
$endIndex = $segment[$i] ;
$temp = array();
for ($j=$startIndex ; $j<$endIndex ; $j++) {
if (array_key_exists($j, $filteredArray)) {
$temp[] = $filteredArray[$j];
}
}
$recomposed[] = $temp;
}
return ($recomposed);
}