我有以下多维数组。
$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
答案 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