从多维数组中获取最高值
Get highest value from multidimensional array
这是我的多维数组:
$arrOrg = [2, 3, [5, 7, 1], 100, [6, 9, [14, 95]], 78];
我想从这个数组中获取最大值。
这是我目前尝试过的方法:
$highest = 0;
function getHighest($arr) {
for ($i = 0; $i < count($arr); $i++) {
if (is_array($arr[$i])) {
getHighest($arr[$i]);
} else {
if ($arr[$i] > $arr[$i + 1]) {
$highest = $arr[$i];
} else {
$highest = $arr[$i + 1];
}
}
}
return $highest;
}
echo getHighest($arrOrg);
但它给出了错误的结果:78
你能帮帮我吗?
也许是这样的:
$arrOrg = [2, 3, [5, 7, 1], 100, [6, 9, [14, 95]], 78];
$json = json_encode($arrOrg);
$json = str_replace(array('[', ']'), "", $json);
$arr = explode(",", $json);
echo $maximum = max($arr);
在 Vahe Galstyan 发表评论后进行编辑
$arrOrg = array(
2,
3,
array(5, 7, 1),
100,
array(
6,
9,
array(14, 95)
),
78
);
$json = json_encode($arrOrg);
$json = str_replace(array('[', ']'), "", $json);
$arr = explode(",", $json);
echo $maximum = max($arr);
你可以使用这个函数。
function getHighest($array) {
foreach($array as $key => $value) {
if (is_array($value)) {
$array[$key] = getHighest($value);
}
}
sort($array);
return array_pop($array);
}
echo getHighest($arrOrg);
您可以使用此方法完成此操作。
<?php
$array = [2, 3, [5, 7, 1], 100, [6, 9, [14, 95]], 78];
$highest_value=0;
get_highest_value($array);
function get_highest_value($array){
foreach($array as $val){
if(is_array($val)){
get_highest_value($val);
}else{
if($GLOBALS['highest_value'] < $val){
$GLOBALS['highest_value'] = $val;
}
}
}
}
echo $highest_value; // output 100
没有全局变量,修改数组或进行额外的转换:
funcion getMax ($arr) {
$max = null;
foreach ($arr as $act) {
if (is_array ($act)) {
$act = getMax ($act);
}
if ($max == null || act > $max) {
$max = $act;
}
}
return $max;
}
我认为将数组转换为 json, ... 删除“[”和“]”,然后将字符串重新转换为数组不是查找最大值的算法。无论如何,...在 php 它有效。几行。我认为这是一个非常漂亮的解决方案^_^。
但是我也想用这段代码来解决这个问题。
$highest = null;
array_walk_recursive($arrOrg, function($item, $key) use (&$highest) {
if (!isset($highest) || $highest < $item) {
$highest = $item;
}
});
echo $highest;
您也可以通过 array_walk_recursive() 和 max() 实现它,如下所示,请在此处检查输出 https://eval.in/809971
<?php
$arrOrg = [2, 3, [5, 7, 1], 100, [6, 9, [14, 95]], 78];
$oneD = array();
array_walk_recursive($arrOrg,function ($a) use (&$oneD){
$oneD[] = $a;
});
echo "Maximum value = ".max($oneD);
这是我的多维数组:
$arrOrg = [2, 3, [5, 7, 1], 100, [6, 9, [14, 95]], 78];
我想从这个数组中获取最大值。
这是我目前尝试过的方法:
$highest = 0;
function getHighest($arr) {
for ($i = 0; $i < count($arr); $i++) {
if (is_array($arr[$i])) {
getHighest($arr[$i]);
} else {
if ($arr[$i] > $arr[$i + 1]) {
$highest = $arr[$i];
} else {
$highest = $arr[$i + 1];
}
}
}
return $highest;
}
echo getHighest($arrOrg);
但它给出了错误的结果:78
你能帮帮我吗?
也许是这样的:
$arrOrg = [2, 3, [5, 7, 1], 100, [6, 9, [14, 95]], 78];
$json = json_encode($arrOrg);
$json = str_replace(array('[', ']'), "", $json);
$arr = explode(",", $json);
echo $maximum = max($arr);
在 Vahe Galstyan 发表评论后进行编辑
$arrOrg = array(
2,
3,
array(5, 7, 1),
100,
array(
6,
9,
array(14, 95)
),
78
);
$json = json_encode($arrOrg);
$json = str_replace(array('[', ']'), "", $json);
$arr = explode(",", $json);
echo $maximum = max($arr);
你可以使用这个函数。
function getHighest($array) {
foreach($array as $key => $value) {
if (is_array($value)) {
$array[$key] = getHighest($value);
}
}
sort($array);
return array_pop($array);
}
echo getHighest($arrOrg);
您可以使用此方法完成此操作。
<?php
$array = [2, 3, [5, 7, 1], 100, [6, 9, [14, 95]], 78];
$highest_value=0;
get_highest_value($array);
function get_highest_value($array){
foreach($array as $val){
if(is_array($val)){
get_highest_value($val);
}else{
if($GLOBALS['highest_value'] < $val){
$GLOBALS['highest_value'] = $val;
}
}
}
}
echo $highest_value; // output 100
没有全局变量,修改数组或进行额外的转换:
funcion getMax ($arr) {
$max = null;
foreach ($arr as $act) {
if (is_array ($act)) {
$act = getMax ($act);
}
if ($max == null || act > $max) {
$max = $act;
}
}
return $max;
}
我认为将数组转换为 json, ... 删除“[”和“]”,然后将字符串重新转换为数组不是查找最大值的算法。无论如何,...在 php 它有效。几行。我认为这是一个非常漂亮的解决方案^_^。
但是我也想用这段代码来解决这个问题。
$highest = null;
array_walk_recursive($arrOrg, function($item, $key) use (&$highest) {
if (!isset($highest) || $highest < $item) {
$highest = $item;
}
});
echo $highest;
您也可以通过 array_walk_recursive() 和 max() 实现它,如下所示,请在此处检查输出 https://eval.in/809971
<?php
$arrOrg = [2, 3, [5, 7, 1], 100, [6, 9, [14, 95]], 78];
$oneD = array();
array_walk_recursive($arrOrg,function ($a) use (&$oneD){
$oneD[] = $a;
});
echo "Maximum value = ".max($oneD);