当值达到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()返回根据标准比较被视为“最高”的参数值。你在传递信息。