PHP意外;我想不通

时间:2018-04-02 02:46:08

标签: php

出于某种原因,这将导致意外;在第4行。我无法弄清楚为什么这不起作用。如果我删除;它会在第5行产生意外的T_VARIABLE。

<?php
    findMostFreq($arr)
    {
      $y = arsort($arr);
       $freq = array();

       foreach($y as $v)
       {
           if((array_key_exists($v, $freq))
            $freq[$v]++;

            else 
            $freq[$v] = 1;
       }

    }
}
?>

2 个答案:

答案 0 :(得分:1)

您的arsort实现错误,但您也遇到了一些语法错误。

arsort:

  

成功时返回 TRUE ,失败时返回 FALSE 。但你是   在这里期待阵列。

<?php
function findMostFreq($arr)
{
    arsort($arr);
    $freq = array();

    foreach ($arr as $v) {
        if (array_key_exists($v, $freq)) {
            $freq[$v]++;
        } else {
            $freq[$v] = 1;
        }
    }
    return $freq;
}    

$arr = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple","m" => "lemon");
$result = findMostFreq($arr);
print '<pre>';
print_r($result);
print '</pre>';

&GT;

<强>输出:

Array
(
    [orange] => 1
    [lemon] => 2
    [banana] => 1
    [apple] => 1
)

DEMO: https://eval.in/981994

顺便说一句如果您只想要发生哪个数组值最多/多少时间,即数组在数组中出现多少次,请尝试使用array_count_values()

答案 1 :(得分:0)

试试这个

<?php
function findMostFreq($arr)
{
    arsort($arr);
    $freq = array();

    foreach ($arr as $v) {
        if (array_key_exists($v, $freq)) {
            $freq[$v]++;
        } else {
            $freq[$v] = 1;
        }
    }
}
findMostFreq($someArray);