此代码用于查找嵌套数组的最大数量。每次我通过'echo'输出数字是给我的字符串'array'而不是最高的数字,应该是'4'。
<?php
$arr = array(
"1",
"2",
array(
"3",
"4"
)
);
foreach ($arr as $value)
{
if (is_array($value))
{
foreach ($value as $value2)
{
$max_array = array(
$value
);
// no deeper levels
}
}
else
{
$max_array = array(
$value
);
}
}
$ash = max($max_array);
echo $ash;
?>
这个错误刚刚开始发生,这就是为什么我无法弄明白:错误显示:
Notice: Array to string conversion in C:\xampp\htdocs\index.php on line 17 Array
答案 0 :(得分:1)
回应像这样的数组不起作用。您需要print_r
或循环:
foreach($ash as $a) {
echo $a;
}
答案 1 :(得分:0)
您可以像这样简化代码,以找到数组中最大的数字。
<?php
$arr = array(
"1",
"2",
array(
"3",
"4"
)
);
$str = json_encode($arr);
preg_match_all('!\d+!', $str, $matches);
echo max(array_unique($matches[0])); //"prints" 4
以下代码只是JSON对您的数组进行编码,然后使用正则表达式来匹配数字,最后我们使用max
来查找最大数字。
答案 2 :(得分:0)
尝试以下代码:
<?php
$arr = array(
"1",
"2",
array(
"3",
"4"
)
);
$max_array = array();
foreach ($arr as $value) {
if (is_array($value)) {
foreach ($value as $value2) {
$max_array = $value;
}
} else {
$max_array = $value;
}
}
$ash = max($max_array);
echo $ash;
?>
答案 3 :(得分:0)
您正在尝试将数组(带有关键值的有序地图)转换为字符串。
为了渲染您的阵列,您需要采用以下方法之一:
方法一: 转储整个数据类型(适用于数组,字符串,布尔值和浮点数。)
var_dump($array);
方法二: 以人类可读的格式打印数组。
print_r($array);
方法三 查看每个键并打印键和值。
foreach ( $array as $key => $value ) {
print "Array Key :: {$key}, Array Value :: {$value}";
}
有关阵列的更多信息,请参阅:http://hk1.php.net/manual/en/language.types.array.php
答案 4 :(得分:0)
使用以下功能: -
function findMax($array){
if(is_array($array)){
foreach($array as $key => $value){
$array[$key] = findMax($value);
}
return max($array);
}else{
return $array;
}
}
echo findMax($arr);
此函数将从多维数组返回最大值。
答案 5 :(得分:0)
使用array_reduce
函数处理任何深度的数组:
$arr = array(
"1",
"2",
array(
"3",
"4",
array(
"5",
"7"
),
"8"
)
);
// This will output "8"
echo array_reduce($arr, 'MaxRecursive');
function MaxRecursive($max, $value)
{
// If we have an array, loop through it and
// get the max for each entry
if (is_array($value))
{
$values = array();
foreach ($value as $val)
{
$values[] = MaxRecursive(0, $val);
}
$value = max($values);
}
$max = $max > $value ? $max : $value;
return $max;
}
答案 6 :(得分:0)
$arr = array(
"1",
"2",
array(
"3",
"4"
)
);
foreach ($arr as $value) {
echo $value . '<br>';
if (is_array($value)) {
foreach ($value as $value2) {
echo $value2 . '<br>';
$max_array = array(
$value2 //your mistake was here(you had written $value
//it becomes array within an array i.e.
//$max_array = array( array());
//so d output was array
//Execute this and u will get the solution
);
// no deeper levels
}
} else {
$max_array = array(
$value
);
}
}
$ash = max($max_array);
echo $ash;