你好試圖找到在數組中的重複值,我有這樣的檢查是否值爆炸數組被複制與其他爆炸值
$array = array('1%2','3%4','1%2',1%3);
陣列,所以我想找到重複2
%
後,所以我用爆炸中的foreach
,所以我想$s[1]
檢查,如果%
在數組複製 後值反正是有做
你好試圖找到在數組中的重複值,我有這樣的檢查是否值爆炸數組被複制與其他爆炸值
$array = array('1%2','3%4','1%2',1%3);
陣列,所以我想找到重複2
%
後,所以我用爆炸中的foreach
,所以我想$s[1]
檢查,如果%
在數組複製 後值反正是有做
當您循環查看重複項時,您需要收集正確的值。我通過他們的「偏移量」[2]
來訪問字符串的右側值。找到後,可以用break
退出循環。
代碼:(Demo)
$array=['1%2','3%4','1%2','1%3'];
$kept=[];
foreach($array as $i=>$v){
if(in_array($v[2],$kept)){
echo "Element (index $i) containing $v has duplicate right side value.";
break;
}
$kept[]=$v[2];
}
輸出:
Element (index 2) containing 1%2 has duplicate right side value.
如果你想搜索與%2
結尾的所有元素,你可以使用preg_grep()
。
代碼:
$search=2;
$array=['1%2','1%3','1%4','3%2','5%2'];
var_export(preg_grep("/%{$search}$/",$array));
輸出:
array (
0 => '1%2',
3 => '3%2',
4 => '5%2',
)
或者沒有正則表達式,這將需要更多的函數調用:
$search=2;
$array=['21%2','1%3','2%22','1%4','3%21','5%2'];
var_export(array_filter($array,function($v)use($search){return strpos($v,"%$search")+2===strlen($v);}));
輸出:
array (
0 => '21%2',
5 => '5%2',
)
... [深呼吸]這裏將試圖回答#4 ...
代碼:
$array=['1%2','1%3','1%4','3%2','5%2'];
foreach($array as $v){
$grouped[explode('%',$v)[1]][]=$v; // use right side number as key
}
var_export($grouped);
輸出:
array (
2 =>
array (
0 => '1%2',
1 => '3%2',
2 => '5%2',
),
3 =>
array (
0 => '1%3',
),
4 =>
array (
0 => '1%4',
),
)
如果你想計算數組中的右側值:
$array=['1%2','1%3','1%4','3%2','5%2'];
$array=preg_replace('/\d+%/','',$array); // strip the left-size and % from elements
var_export(array_count_values($array)); // count occurrences
輸出:
// [right side values] => [counts]
array (
2 => 3,
3 => 1,
4 => 1,
)
你好,謝謝,但$ v [2]返回1%2,但我需要搜索%之後的數字,並檢查它是否重複可以說我的數組像這樣$ a = array('1%2','1% 3' , '1%4', '3%2', '5%2');我想我的輸出是,有3個重複值1%2,3%2和5%2 –
我已經添加了一個搜索變量到我的最新方法。這是你想要的? – mickmackusa
你好,謝謝你,但2只是一個例子,我打算檢查每個數字後,如果有重複的意思a =數組('1%3','2%4','3%3','5%4', '1%6', '3%2');我想輸出是像2號重複值3號,有2號重複值4號,這就是我想要的,值後%它的自定義值用戶可以添加任何數字 –
存儲在數組中的爆炸校驗值,然後檢查未來值針對陣列'in_array' – yanman1234
我不明白函數如何in_array會幫我複製的顯示值? –