PHP:在数组中存储字符串以及添加次数


PHP: Store String in array along with how many times it was added?

是否可以将String与数字一起存储在数组中?

例如:

array("bob" => 2,
  "billy" => 5);

这是我的数组,每当添加新的bob或billy时,它们的数字就会增加1。然后我也想得到一个数最高的元素,所以在这种情况下——比利,因为他被加了5次。

我如何在PHP中做到这一点?

$counters = [
    "bob" => 2, 
    "billy" => 5
];
function addNew($newWhat, &$counters) {
    $newWhat = strtolower($newWhat);
    if (isset($counters[$newWhat])) {
        $counters[$newWhat]++;
    } else {
        $counters[$newWhat] = 1;
    }
}
addNew('Bob', $counters);
addNew('Billy', $counters);
addNew('Bob', $counters);
addNew('Rita', $counters);
var_dump($counters);

然后

arsort($counters);
echo array_keys($counters)[0];

使用arsort。arsort()函数根据值按降序对关联数组进行排序。

$data=array("bob"=>"2","billy"=>"5");
arsort($data);
foreach($data as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}

输出:

Key=billy, Value=5
Key=bob, Value=2
$array = array(
    'bob' => 2,
    'billy' => 5
);
function add_value($array, $index)
{
    if (isset($array[$index]))
        $array[$index] += 1;
    else
        $array[$index] = 1;
    return $array;
}
$array = add_value($array, 'bob');
$array = add_value($array, 'bob');
$array = add_value($array, 'bob');
$array = add_value($array, 'bob');
$max_indexes = array_keys($array, max($array));

请注意,$max_indexes是一个具有最大索引的数组,它可能包含多个element,因为您可以有多个最大值。