PHP - 为什么我得到'array'的输出?回显一个数组

时间:2014-02-13 06:48:00

标签: php arrays

此代码用于查找嵌套数组的最大数量。每次我通过'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

7 个答案:

答案 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;
  1. 正确阅读评论,您将获得解决方案
  2. 执行此操作并检查