Php 多维数组中的最小值和最大值
您好,我正在尝试查找x和y的最小值和最大值。我如何才能找到此最小值和最大值函数工作不正常Php 多维数组中的最小值和最大值,php,multidimensional-array,Php,Multidimensional Array,您好,我正在尝试查找x和y的最小值和最大值。我如何才能找到此最小值和最大值函数工作不正常 $dataPoints = array( array('x' => 2343, 'y' => 4322), array('x' => 103, 'y' => 303 ), array('x' => 2345,'y' => 2321 ), array('x' => 310, 'y' => 2044 ), array('x' => 173,
$dataPoints = array(
array('x' => 2343, 'y' => 4322),
array('x' => 103, 'y' => 303 ),
array('x' => 2345,'y' => 2321 ),
array('x' => 310, 'y' => 2044 ),
array('x' => 173, 'y' => 793 ),
array('x' => 456, 'y' => 2675),
array('x' => 24, 'y' => 819 ));
我认为你必须编写自己的函数:
<?php
function max_with_key($array, $key) {
if (!is_array($array) || count($array) == 0) return false;
$max = $array[0][$key];
foreach($array as $a) {
if($a[$key] > $max) {
$max = $a[$key];
}
}
return $max;
}
$dataPoints = array(
array('x' => 2343, 'y' => 4322),
array('x' => 103, 'y' => 303 ),
array('x' => 2345,'y' => 2321 ),
array('x' => 310, 'y' => 2044 ),
array('x' => 173, 'y' => 793 ),
array('x' => 456, 'y' => 2675),
array('x' => 24, 'y' => 819 ));
$max_x = max_with_key($dataPoints, 'x'); //2343
$max_y = max_with_key($dataPoints, 'y'); //4322
?>
尝试以下方法:
foreach($dataPoints as $point) {
if (!isset($x) || $point['x'] > $x) {
$x = $point['x'];
}
if (!isset($y) || $point['y'] > $y) {
$y = $point['y'];
}
}
生成所需答案的示例代码
foreach($dataPoints[0]['x'] as $x_val)
{
//write max min func for x values
}
foreach($dataPoints[0]['y'] as $y_val)
{
//write max min func for y values
}
我是下划线库的粉丝 不是本机函数,但将避免您自己编写函数,以及许多其他函数:) 哦,它变成了一行 例如:
include_once 'underscore.php';
$dataPoints = array(
array('x' => 2343, 'y' => 4322),
array('x' => 103, 'y' => 303 ),
array('x' => 2345,'y' => 2321 ),
array('x' => 310, 'y' => 2044 ),
array('x' => 173, 'y' => 793 ),
array('x' => 456, 'y' => 2675),
array('x' => 24, 'y' => 819 )
);
__::max($dataPoints, function($item) { return $item['x']; }); // array('x' => 2345,'y' => 2321 )
__::min($dataPoints, function($item) { return $item['y']; }); // array('x' => 103, 'y' => 303 )
您可以使用PHP(PHP5>=5.5.0)实现以下目的:
$min_x = min( array_column( $dataPoints, 'x' ) );
$min_y = min( array_column( $dataPoints, 'y' ) );
$max_x = max( array_column( $dataPoints, 'x' ) );
$max_x = max( array_column( $dataPoints, 'y' ) );
通过组合、和函数,可以分别找到每列的最小值和最大值:
$min_x = min(array_column($dataPoints, 'x'));
$max_x = max(array_column($dataPoints, 'x'));
$min_y = min(array_column($dataPoints, 'y'));
$max_y = max(array_column($dataPoints, 'y'));
是否有任何方法可以获得具有最大值的数组,而不仅仅是最大值放大镜。但如果您也需要数组密钥,则需要更改foreach以包含该密钥(数组的…因为否则逻辑警察会逮捕您),并更改if如下:
$max[$logicpolice]=$a[$key]代码>记住添加$x=array()$y=数组();在foreach之前。
$min_x = min(array_column($dataPoints, 'x'));
$max_x = max(array_column($dataPoints, 'x'));
$min_y = min(array_column($dataPoints, 'y'));
$max_y = max(array_column($dataPoints, 'y'));