Php Max函数未返回正确的结果
我试图在php中使用max finction从数组中获取最大值。但是,尽管使用print\r确保数组按预期显示,但max($array)返回错误的结果。 请看下面的代码,我使用了来自的“simple_html_dom.php”。我期望值为220,但当我回显max($items)时,单击submit时返回24。非常感谢您的帮助Php Max函数未返回正确的结果,php,arrays,Php,Arrays,我试图在php中使用max finction从数组中获取最大值。但是,尽管使用print\r确保数组按预期显示,但max($array)返回错误的结果。 请看下面的代码,我使用了来自的“simple_html_dom.php”。我期望值为220,但当我回显max($items)时,单击submit时返回24。非常感谢您的帮助 <html> <body> <h2>Search</h2> <form method="post"> Sear
<html>
<body>
<h2>Search</h2>
<form method="post">
Search: <input type="text" name="q" value="google"/>
<input type="submit" value="Submit">
</form>
<?php
include 'simple_html_dom.php';
if (isset($_POST['q'])) {
$search = $_POST['q'];
$search = ucwords($search);
$search = str_replace(' ', '_', $search);
$html = file_get_html("http://en.wikipedia.org/wiki/$search");
?>
<h2>Search results for '<?php echo $search; ?>'</h2>
<ol>
<?php
$items = array();
foreach ($html->find('img') as $element): ?>
<?php $photo = $element->src;
$logo = 'Logo';
if(strpos($photo, $logo))
{
if (preg_match_all('/[0-9]+px/', $photo, $result)) {
echo '<br/>';
$rp = trim($result[0][0],"px") .'<br/>';
$items[] = $rp;
} else {
echo "Not found";
}
}
?>
<?php endforeach; echo max($items);
print_r($items);?>
</ol>
<?php
}
?>
</body>
</html>
搜寻
搜索:
“”的搜索结果
以下是var_转储的结果($items):
数组(大小=2)
0=>字符串“220
”(长度=8)
1=>字符串“24
”(长度=7)
如你所见,它把它当作一个字符串。因此,
max()
可以正常工作,您需要首先正确格式化它,剪切标记并转换为int
假设它是一个整数,只需更改$items[]=$rp代码>至$items[]=intval($rp)代码>。。。例如,这会将数组项从'220
'
(字符串)更改为220
(整数)。为什么要使用preg\u match\u all()
,然后只存储第一个结果($result[0][0]
)?对preg\u match()
的简单调用不是更有效吗?此外,请缩进您的代码。print\r
的结果在哪里?在将$rp存储到$items之前,请将其转换为整数$项目[]=(整数)$rp<代码>$rp=trim($result[0][0],“px”)。
代码>。。。为什么?您还应该将max($items)
更改为max($items)。“
”
以保留代码的逻辑。显然,您还应该删除原始的“
”
。
array (size=2)
0 => string '220<br/>' (length=8)
1 => string '24<br/>' (length=7)