min and max in multidimensional-array

后端 未结 7 445
深忆病人
深忆病人 2020-12-02 00:44

hi i am trying to find min and max values of x and y how can i find this min and max functions is not working correctly

$dataPoints = array(
 array(\'x\' =&g         


        
相关标签:
7条回答
  • 2020-12-02 00:59
    //to find max use rsort() & for min :sort()
    //Below will return you the max 
    $dataPoints = array(
         array('x' => 2343, 'y' => 4322),
          array('x' => 103, 'y' => 7303 ),
          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 ));
    
          foreach ($dataPoints as $key=>$value) {
            $x[$key] = $value['x'];
            $y[$key] = $value['y'];
          }
    rsort($x,SORT_DESC);
    rsort($y,SORT_DESC);
    
    echo $x[0];
    echo $y[0];
    
    0 讨论(0)
  • 2020-12-02 01:03

    You can use PHP's array_column() (PHP 5 >= 5.5.0) for this:

    $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' ) );
    
    0 讨论(0)
  • 2020-12-02 01:11

    Sample code to built your required answer

    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
    }
    
    0 讨论(0)
  • 2020-12-02 01:12

    You can find individually the minimum and maximum values of each column by combining array_column, min and max functions:

    $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'));
    
    0 讨论(0)
  • 2020-12-02 01:13

    I thinik you will have to write your own function:

    <?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
    ?>
    
    0 讨论(0)
  • 2020-12-02 01:13

    Try something like this:

    foreach($dataPoints as $point) {
        if (!isset($x) || $point['x'] > $x) {
            $x = $point['x'];
        }
        if (!isset($y) || $point['y'] > $y) {
            $y = $point['y'];
        }
    }
    
    0 讨论(0)
提交回复
热议问题