【问题标题】:Merging two foreach in php laravel/api在 php laravel/api 中合并两个 foreach
【发布时间】:2019-02-27 15:51:08
【问题描述】:

美好的一天!我成功地找到了缩短我的代码的答案。有人说我可以合并 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));

【问题讨论】:

标签: php laravel api


【解决方案1】:

您可以使用array_combine 使其更简单:

$newArray = [];
$keys = ['name', 'sex', 'age', 'height', 'weight'];
foreach (explode(PHP_EOL, Storage::get('upload/test.txt')) as $line) {
    $newArray[] = array_combine($keys, explode(',', $line));
}

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

$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')));

【讨论】:

    猜你喜欢
    • 2019-04-29
    • 2021-11-21
    • 2018-04-07
    • 2016-06-05
    • 1970-01-01
    • 2019-12-01
    • 2013-12-15
    • 1970-01-01
    • 2015-04-04
    相关资源
    最近更新 更多