Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php-laravel/api中合并两个foreach_Php_Laravel_Api - Fatal编程技术网

在php-laravel/api中合并两个foreach

在php-laravel/api中合并两个foreach,php,laravel,api,Php,Laravel,Api,你好!我成功地找到了缩短代码的答案。有人说我可以合并foreach语句,使其变得更短。但是我到处搜索,但似乎找不到任何类似代码的解决方案。我只是想知道如何将这两个foreach合并 这是我的密码: $newArray = []; $keys = ['name', 'sex', 'age', 'height', 'weight']; foreach(explode(PHP_EOL, Storage::get('upload/test.txt')) as $key =>

你好!我成功地找到了缩短代码的答案。有人说我可以合并foreach语句,使其变得更短。但是我到处搜索,但似乎找不到任何类似代码的解决方案。我只是想知道如何将这两个foreach合并

这是我的密码:

    $newArray = [];
    $keys = ['name', 'sex', 'age', 'height', 'weight'];
    foreach(explode(PHP_EOL, Storage::get('upload/test.txt')) as $key => $line) {
        $finalArray = [];
        foreach( explode(',', $line) as $i => $value){
            $finalArray[ $keys [ $i ] ] = $value;       
        }
        array_push($newArray, $finalArray); 
    }
    die(json_encode($newArray));
以下是与第一个代码具有相同输出的另一个代码:

        $newArray = array();
        foreach(explode(PHP_EOL, Storage::get('upload/test.txt')) as $key => $line) {
            array_push($newArray, explode(',', $line)); 
        }
        $finalArray = array();
        foreach($newArray as $key) {
                $key = [
                            "name" => $key[0],
                            "sex" => $key[1],
                            "age" => $key[2],
                            "height" => $key[3],
                            "weight" => $key[4],
                        ];
                        array_push($finalArray, $key); 
        }
        die(json_encode($finalArray));

您可以使用以下方法使其更简单:

或者您可以使用并执行以下操作:

$keys = ['name', 'sex', 'age', 'height', 'weight'];

$newArray = array_map(function ($line) use ($keys) {
    return array_combine($keys, explode(',', $line));
}, explode(PHP_EOL, Storage::get('upload/test.txt')));

通过使用single for循环,而不是foreach循环来检查这个!
$keys = ['name', 'sex', 'age', 'height', 'weight'];

$newArray = array_map(function ($line) use ($keys) {
    return array_combine($keys, explode(',', $line));
}, explode(PHP_EOL, Storage::get('upload/test.txt')));