我试图在php中使用max finction从数组中获取最大值。但是,尽管确保数组看起来像我期望的那样使用print_r,但max($ array)返回错误的结果。 请参阅下面的代码,我使用了来自http://simplehtmldom.sourceforge.net/的“simple_html_dom.php”。我期望值为220,但是当我回显max($ items)时,它会在单击提交时返回24。非常感谢任何帮助。
<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>
答案 0 :(得分:2)
这是var_dump($ items)的结果:
array (size=2)
0 => string '220<br/>' (length=8)
1 => string '24<br/>' (length=7)
如您所见,它将其作为字符串。因此,max()
可以正常工作,您需要先将其正确格式化,剪切标记并转换为int
。
答案 1 :(得分:1)
假设它是一个整数,只需将$items[] = $rp;
更改为$items[] = intval($rp);
...例如,这会将数组条目从'220<br/>'
(字符串)更改为220
(整数)。