首页 > 解决方案 > array_map 函数返回空变量

问题描述

array_map(function ($id) use ($filename) {
                $keyword = Keyword::find($id)->name;
                $filename .= $keyword . '-';
                Log::info($filename);
            }, $input['keyword_id']);

我想将关键字的名称添加到我的文件名字符串变量中,但我在日志中看到的值如下:

keyword1
keyword2

我想要的输出是一个字符串作为一行。

keyword1keyword2 

但是正如您所看到的,每次它都会更改字符串而不是追加。

标签: phparraysstringfunctionarray-map

解决方案


您想将文件名作为参考传递,我认为它会起作用:

use(&$filename)

如果你不这样做,它不会改变$filename函数的外部。

编辑:为我认为您正在尝试做的事情提出不同的方法:

foreach ($input['keyword_id'] as $index => $id) {
    $filename .= Keyword::find($id)->name;
    // dont append a "-" if this is the last keyword to be added
    if ($index < sizeof($input['keyword_id'])-1)
        $filename .= '-';
}

推荐阅读