最大功能无法返回正确的结果

时间:2014-11-28 09:47:08

标签: php arrays

我试图在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>

2 个答案:

答案 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(整数)。