我有重複值的數組。怎麼能算在php數組重複值?
我想打印的所有項目,也有重複的值,我想打印數量太多。
像這樣:
$arr = array('sara','jorj','sara','sara','jorj','eli','ana')
foreach($arr as $name)
{
echo $name;
}
如何打印這樣的結果:
sara
jorj
sara-2
sara-3
jorj-2
eli
ana
我有重複值的數組。怎麼能算在php數組重複值?
我想打印的所有項目,也有重複的值,我想打印數量太多。
像這樣:
$arr = array('sara','jorj','sara','sara','jorj','eli','ana')
foreach($arr as $name)
{
echo $name;
}
如何打印這樣的結果:
sara
jorj
sara-2
sara-3
jorj-2
eli
ana
這應該爲你工作:
在這裏,我第一次使用array_slice()
獲得所有元素的數組,其在迭代的當前元素之前,例如
iteration value | sliced array
-----------------------------------
sara | []
jorj | [sara]
然後我用這個數組array_filter()
,僅保留值與等於當前迭代值,所以我可以告訴多少相同的值是當前值之前在數組中。
現在我只需要count()
有多少,如果有超過1我們也將其打印輸出。
代碼:
$arr = array('sara','jorj','sara','sara','jorj','eli','ana');
foreach($arr as $key => $name) {
$count = count(array_filter(array_slice($arr, 0, $key), function($v)use($name){
return $v == $name;
})) + 1;
echo $name . ($count > 1 ? " - $count" : "") . PHP_EOL;
}
輸出:
sara
jorj
sara - 2
sara - 3
jorj - 2
eli
ana
也許我有點晚於這個答案,但是我的繼承人嘗試
$arr = array('sara','jorj','sara','sara','jorj','eli','ana');
$tmp = array();
foreach ($arr as $value) {
if (!isset($tmp[$value])) {
// if $value is not found in tmp array
// initialize the value in tmp array and set to 1
$tmp[$value] = 1;
echo $value;
}
else {
// found the value in tmp array
// add 1 to the value in tmp array
// output its current total count of this value
$tmp[$value] += 1;
echo "$value-", $tmp[$value];
}
echo "<br>";
}
輸出:
sara
jorj
sara-2
sara-3
jorj-2
eli
ana
這實際上有array_count_values
相同的輸出,而是分成它是如何形成碎片......我想