PHP:如何获得多维数组的最小值和最大值?

时间:2015-10-19 22:30:03

标签: php arrays multidimensional-array

我有以下多维数组。

$dog_treats=array(
    array(
        'Rupert' = array(
        'Breed' => 'German Shepherd',
        'treats' = array(
            0 => 3,
            1 => 2,
            2 => 6
        ),
     ),
        'Zeus' = array(
        'Breed' => 'Golden Retreiver',
        'treats' = array(
             0 => 5,
             1 => 4,
             2 => 1,
             3 => 2
        ),
     ),
   ),
);

语法有点偏,但这就是它的样子。创建它的代码是:

$dog_treats['Rupert']['Breed'] = 'German Shepherd';
$dog_treats['Rupert']['treats'][0] = 3;
$dog_treats['Rupert']['treats'][1] = 2;
$dog_treats['Rupert']['treats'][2] = 6;

$dog_treats['Zeus']['Breed'] = 'Golden Retreiver';
$dog_treats['Zeus']['treats'][0] = 5;
$dog_treats['Zeus']['treats'][1] = 4;
$dog_treats['Zeus']['treats'][2] = 1;
$dog_treats['Zeus']['treats'][3] = 2;

对于每只狗,我想获得他们当天吃的最大和最小数量的零食。我该怎么做呢?感谢

Rupert max = 6 min = 2

Zeus max = 5 min = 1

3 个答案:

答案 0 :(得分:2)

基本上是:

foreach ($dog_treats as $k=>$v){
  echo $k.'<br>';
  echo "max: ". max($dog_treats[$k]['treats']).'<br>';
  echo "min: ". min($dog_treats[$k]['treats']).'<br>';
}

演示:http://codepad.viper-7.com/BGeMGx

foreach ($dog_treats as $k=>$v){
  echo $k.'<br>';
  echo "max: ". max($v['treats']).'<br>';
  echo "min: ". min($v['treats']).'<br>';
}

答案 1 :(得分:1)

如果要在数组中存储min / max处理,可以使用array_walk并应用这些值:

public static function boot()
{
    parent::boot();

    // This method will be called on creating and updating
    // but there are separate events for both methods so you
    // may use separate handlers for different events like : 
    // static::creating(...) static::updating(...)
    static::saving(function($user)
    {
        // Set rules and validate here
    });
}

如果您只想打印最小/最大值,可以使用foreach循环并简单地回显:

array_walk($dogs, function(&$dog) {
    $dog['min'] = min($dog['treats']);
    $dog['max'] = max($dog['treats']);
});

答案 2 :(得分:1)

如果要立即定义数组,可以使用以下代码:

$dog_treats = array(
    array(
        'Rupert' => array(
            'Breed' => 'German Shepherd',
            'treats' => array(
                0 => 3,
                1 => 2,
                2 => 6
            ),
         ),
        'Zeus' => array(
            'Breed' => 'Golden Retreiver',
            'treats' => array(
                 0 => 5,
                 1 => 4,
                 2 => 1,
                 3 => 2
            ),
        ),
    ),
);

foreach($dog_treats as $key) {
    foreach($key as $dog => $value) {
        echo 'Dog: '.$dog.', Max: '.max($value['treats']).', Min: '.min($value['treats']).'<br />';
    }
}

结果:

Dog: Rupert, Max: 6, Min: 2
Dog: Zeus, Max: 5, Min: 1