Как я могу получить минимальное значение многомерного массива с помощью этой формы? [dубликат]

Вот файл конфигурации для моего файла Eduroam (идентификация удалена). Он работает в моем университете и других (в Великобритании).

[ipv6]
method=auto

[connection]
id=eduroam
uuid=b6ab9322-075c-4ca1-96a3-6c0262c644bb
type=802-11-wireless
timestamp=1461166416

[802-11-wireless-security]
key-mgmt=wpa-eap

[802-11-wireless]
ssid=eduroam
mode=infrastructure
mac-address=blahblah
seen-bssids=blahblah
security=802-11-wireless-security

[802-1x]
eap=ttls;
identity=blahblah
phase2-auth=mschapv2
password-flags=1

[ipv4]
method=auto

Как вы можете видеть, есть несколько отличий. Вы можете попробовать изменить способ настройки IPv6 на auto, не использовать сертификат и изменить протокол проверки подлинности (eap) на ttls.

3
задан 14 September 2016 в 18:07

2 ответа

Мне нравится использовать array_reduce ()

$a[]=array('name'=>'kokopiko','price'=>34);
$a[]=array('name'=>'kokospiko2','price'=>234);
$a[]=array('name'=>'kokospiko3','price'=>4);

$minmax = array_reduce($a, function($result, $item) {

    if (!isset($result['min'])) {
        $result['min']=$item;
    }
    if ($result['min']['price'] > $item['price']) {
        $result['min']=$item;
    }

    if (!isset($result['max'])) {
        $result['max']=$item;
    }
    if ($result['max']['price'] < $item['price']) {
        $result['max']=$item;
    }
    return $result; 
}); 

var_dump($minmax);

более короткая версия

$a[]=array('name'=>'kokopiko','price'=>34);
$a[]=array('name'=>'kokospiko2','price'=>234);
$a[]=array('name'=>'kokospiko3','price'=>4);

$init=array('min'=>$a[0],'max'=>$a[0]);

$minmax = array_reduce($a, function($result, $item) {
    ($result['min']['price'] < $item['price'])?:$result['min']=$item;
    ($result['max']['price'] > $item['price'])?:$result['max']=$item;
    return $result; 
}, $init);

Только значения min / max (не связанные элементы массива

$min= array_reduce($a, function($result, $item) {return min($result, $item['price']);}, $a[0]['price']);
$max= array_reduce($a, function($result, $item) {return max($result, $item['price']);}, $a[0]['price']);
1
ответ дан 15 August 2018 в 15:55
  • 1
    Я надеялся, что кто-то опубликует его, но для него это много. – AbraCadaver 7 February 2015 в 03:56
  • 2
    Я просто хотел сделать это более ясным :) Я добавлю короткую версию – user3085707 9 February 2015 в 20:57

Я думаю, что лучший способ (самый простой способ) - получить все цены от вашего массива и сохранить в отдельных массивах.

Затем вы извлекаете максимальное значение из нового массива.

Попробуйте следующее:

$myarray = array ( array( "DateTime" => "2013-05-22 14:21:01", "Price" => 102.01),
                   array( "DateTime" => "2013-05-23 15:55:01", "Price" => 52.60),
                   array( "DateTime" => "2013-05-25 14:23:01", "Price" => 452.25)
                 );

//$key is index of $myarray and $value is one of subarrays
//declare a new array to store all prices

$all_price = array();

foreach ($myarray as $key => $value)
{
    //get only "Price" from each row of array (discard "DateTime")
    $all_price[] = $value["Price"];

}

//$all_price cointains now all prices and you can get min and max

$min = min($all_price);
$max = max($all_price);

echo("Min: ".$min."<br />");
echo("Max: ".$max."<br />");

Скопируйте и вставьте этот код в http://www.writephponline.com/, чтобы увидеть результат! : D

Работает также на PHP ниже 5.5.0

0
ответ дан 15 August 2018 в 15:55
  • 1
    Я отредактировал свой ответ, потому что я неправильно понял вопрос. Это решение было протестировано и очень просто. Вы можете попробовать это в тесте PHP. Я оставил ссылку. – Yeti82 7 February 2015 в 03:03

Другие вопросы по тегам:

Похожие вопросы: