当值达到10时,PHP Max()函数不起作用

当值达到10时,PHP Max()函数不起作用,php,function,max,Php,Function,Max,所以我对这个代码片段有点问题。。。以下是我的变量: $total_one = ''.$total_one_section.' One'; $total_two = ''.$total_two_section.' Two'; $total_three = ''.$total_three_section.' Three'; $highest_total_level = max($total_one,$total_two ,$total_three); 目前的总数是: 10 One 4 Two 3

所以我对这个代码片段有点问题。。。以下是我的变量:

$total_one = ''.$total_one_section.' One'; 
$total_two = ''.$total_two_section.' Two';
$total_three = ''.$total_three_section.' Three';
$highest_total_level = max($total_one,$total_two ,$total_three);
目前的总数是:

10 One
4 Two
3 Three
这意味着代码应该返回
10 One
,但出于某种原因,它返回
4 Two
。我已经注意到,如果我将
One
的值更改为
9
,那么:
9one
会返回它应该返回的值,
9one
作为最高值。它似乎只有在值达到10时才会停止正常工作?有人知道为什么会这样吗

看,PHP是一个杂食性的工具:它允许任何类型的参数,与使用类型和按需处理相比

由于您传递给它的所有值都是字符串,因此从第一个值开始,将逐字符对它们进行比较(所谓的词法比较)。由于字符
4
的代码点高于
1
'4 2'
大于
'10 1'

有很多方法可以解决这个问题;该键以某种方式存储原始(数字)值。@Geoffrey的回答中建议了一种可能的方法-使用数字作为键,它们的“尾部”作为该数组的值,然后只需将
max
应用于
array\u keys()

请看,PHP是一种杂食性:它允许任何类型的参数,与使用类型和按需处理进行比较

由于您传递给它的所有值都是字符串,因此从第一个值开始,将逐字符对它们进行比较(所谓的词法比较)。由于字符
4
的代码点高于
1
'4 2'
大于
'10 1'

有很多方法可以解决这个问题;该键以某种方式存储原始(数字)值。@Geoffrey的回答中建议了一种可能的方法-使用数字作为键,它们的“尾部”作为该数组的值,然后只需将
max
应用于
array\u keys()


您正在比较字符串,
4 Two
4
开头,而
10 One
1
开头。这就是
MAX
所比较的。您应该比较
$total\u two\u section
$total\u one\u section
$total\u two\u section
,因为它们是整数。

您在比较字符串时,
4 two
4
开头,而
10 one
1
开头。这就是
MAX
所比较的。您应该比较
$total\u two\u section
$total\u one\u section
$total\u two\u section
,因为它们都是整数。

PHP试图做的是将数字排序为字符串,您可能更喜欢这样:

$numbers = array(

  10 => "one",
  4 => "two",
  3 => "three"

)

然后再加上类似的东西

PHP试图做的是将数字排序为字符串,您可能更喜欢这样的东西:

$numbers = array(

  10 => "one",
  4 => "two",
  3 => "three"

)
然后混合类似的内容

max()根据标准比较返回被视为“最高”的参数值。您正在传递字符串。max()返回根据标准比较被视为“最高”的参数值。你在传递信息。