Php 返回空变量的数组映射函数
我想将关键字的名称添加到我的filename字符串变量中,但我在日志中看到的值如下:Php 返回空变量的数组映射函数,php,arrays,string,function,array-map,Php,Arrays,String,Function,Array Map,我想将关键字的名称添加到我的filename字符串变量中,但我在日志中看到的值如下: array_map(function ($id) use ($filename) { $keyword = Keyword::find($id)->name; $filename .= $keyword . '-'; Log::info($filename); }, $input['ke
array_map(function ($id) use ($filename) {
$keyword = Keyword::find($id)->name;
$filename .= $keyword . '-';
Log::info($filename);
}, $input['keyword_id']);
我想要的输出是一个字符串作为一行
keyword1
keyword2
但正如您所看到的,每次它都会更改字符串而不是追加。如果您想将文件名作为引用传递,我认为它会起作用:
keyword1keyword2
如果不这样做,它将不会在函数外部更改$filename
编辑:
为我认为您正在尝试的工作提出不同的方法:
use(&$filename)
foreach($input['keyword\u id']作为$index=>$id){
$filename.=关键字::查找($id)->名称;
//如果这是最后一个要添加的关键字,请不要附加“-”
if($index
如果要将文件名作为引用传递,我认为它将起作用:
keyword1keyword2
如果不这样做,它将不会在函数外部更改$filename
编辑:
为我认为您正在尝试的工作提出不同的方法:
use(&$filename)
foreach($input['keyword\u id']作为$index=>$id){
$filename.=关键字::查找($id)->名称;
//如果这是最后一个要添加的关键字,请不要附加“-”
if($index
您没有返回回调中的每个项目
只需添加:
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 .= '-';
}
在数组映射回调中,您没有返回回调中的每个项 只需添加:
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 .= '-';
}
在数组映射回调中
数组映射
只需将一个数组映射到具有相同元素数的另一个数组。所以你需要在函数中返回一些东西。返回的数组可以内爆(连接)以将所有关键字组合在一起
return $filename
array\u map
只需将一个数组映射到具有相同元素数的另一个数组。所以你需要在函数中返回一些东西。返回的数组可以内爆(连接)以将所有关键字组合在一起
return $filename
你是对的,但我认为他实际上对
array\u map()
返回的数组不感兴趣,他只想迭代$input['keywordid']
并将这些关键字名称(通过关键字::find()
查找)附加到$filename
-一个简单的foreach
也会做同样的事情,你是对的,但我认为他实际上对array\u map()
返回的数组不感兴趣,他只想迭代$input['keywordid']
并附加这些关键字名称(通过关键字::find()
查找)对于$filename
——一个简单的foreach
也可以用更少的代码完成同样的任务。