Php 为什么在循环中访问之前阵列是空的?

Php 为什么在循环中访问之前阵列是空的?,php,laravel,Php,Laravel,我正在深入研究一个Laravel应用程序,并遇到了以下函数。这被称为路由过程的一部分(我正试图弄清楚这一点),我遇到了一个奇怪的情况,某种魔法正在发生。调用函数时,$数组包含一个字符串数组。但是,当我在下面可以看到的某些点转储数组时,它已经完全被转换了 /** * Return the first element in an array passing a given truth test. * * @param array $array * @param callable|nul

我正在深入研究一个Laravel应用程序,并遇到了以下函数。这被称为路由过程的一部分(我正试图弄清楚这一点),我遇到了一个奇怪的情况,某种魔法正在发生。调用函数时,$数组包含一个字符串数组。但是,当我在下面可以看到的某些点转储数组时,它已经完全被转换了

/**
 * Return the first element in an array passing a given truth test.
 *
 * @param  array  $array
 * @param  callable|null  $callback
 * @param  mixed  $default
 * @return mixed
 */
public static function first($array, callable $callback = null, $default = null)
{
    if (is_null($callback)) {
        if (empty($array)) {
            return value($default);
        }

        foreach ($array as $item) {
            return $item;
        }
}
数组在此为空

数组现在包含一个对象

任何关于我应该读什么的建议都会很好


谢谢

检查您认为数组可能是一个对象。我不明白您将数组转储到您的function@BaptisteArnaud一次在第二个foreach之前,一次在第二个foreach中检查您认为数组可能是一个对象。我不明白您将数组转储到您的function@BaptisteArnaud从前第二个foreach和第二个foreach中的一次
dd($array) // []


    foreach ($array as $key => $value) {
        dd($array);


        if (call_user_func($callback, $value, $key)) {
            return $value;
        }
    }

    return value($default);
}