如何在使用 $variable 时将匿名函数转换为常规函数
How to write convert an anonymous functions to a regular function while using use $variable
我正在尝试弄清楚如何将带有匿名函数的 array_map 部分转换为一个函数,同时使用 use 函数来支持 php 5.2,但我一直在获取一个错误。这是我当前的代码。
<?php
$collection = array();
$op_field = array(
'fname' => 'sarmen',
'lname' => 'b',
'age' => 33,
'gender' => 'male'
);
$nf_field = array(
'type' => 'human',
'age' => 30,
'gender' => 'male',
'ethnicity' => 'american'
);
array_map(function($op, $nf) use (&$collection)
{
$collection[] = array(
'op' => $op,
'nf' => $nf
);
}, $op_field, $nf_field);
print_r($collection);
我试过了
function mapping($op, $nf)
{
$collection[] = array(
'op' => $op,
'nf' => $nf
);
return $collection;
}
array_map(mapping($op, $nf), use ($&collection), $op_field, $nf_field);
但这只是给出了一个解析错误。关于如何编写的任何想法?非常感谢。
首先,当您想使用普通函数时,您必须将回调作为字符串传递。其次 PHP 5.3 之前没有 use
,所以你必须使用 global.
如果你把所有东西放在一起你会得到:
function callbackFunction($op, $nf){
global $collection;
$collection[] = array(
'op' => $op,
'nf' => $nf
);
}
array_map("callbackFunction", $op_field, $nf_field);
无需传递对 $collection
的引用,只需执行以下操作即可:
function mapping($op, $nf)
{
return array(
'op' => $op,
'nf' => $nf
);
}
$collection = array_map('mapping', $op_field, $nf_field);
产量:
Array
(
[0] => Array
(
[op] => sarmen
[nf] => human
)
[1] => Array
(
[op] => b
[nf] => 30
)
[2] => Array
(
[op] => 33
[nf] => male
)
[3] => Array
(
[op] => male
[nf] => american
)
)
希望这对您有所帮助:)
我正在尝试弄清楚如何将带有匿名函数的 array_map 部分转换为一个函数,同时使用 use 函数来支持 php 5.2,但我一直在获取一个错误。这是我当前的代码。
<?php
$collection = array();
$op_field = array(
'fname' => 'sarmen',
'lname' => 'b',
'age' => 33,
'gender' => 'male'
);
$nf_field = array(
'type' => 'human',
'age' => 30,
'gender' => 'male',
'ethnicity' => 'american'
);
array_map(function($op, $nf) use (&$collection)
{
$collection[] = array(
'op' => $op,
'nf' => $nf
);
}, $op_field, $nf_field);
print_r($collection);
我试过了
function mapping($op, $nf)
{
$collection[] = array(
'op' => $op,
'nf' => $nf
);
return $collection;
}
array_map(mapping($op, $nf), use ($&collection), $op_field, $nf_field);
但这只是给出了一个解析错误。关于如何编写的任何想法?非常感谢。
首先,当您想使用普通函数时,您必须将回调作为字符串传递。其次 PHP 5.3 之前没有 use
,所以你必须使用 global.
如果你把所有东西放在一起你会得到:
function callbackFunction($op, $nf){
global $collection;
$collection[] = array(
'op' => $op,
'nf' => $nf
);
}
array_map("callbackFunction", $op_field, $nf_field);
无需传递对 $collection
的引用,只需执行以下操作即可:
function mapping($op, $nf)
{
return array(
'op' => $op,
'nf' => $nf
);
}
$collection = array_map('mapping', $op_field, $nf_field);
产量:
Array
(
[0] => Array
(
[op] => sarmen
[nf] => human
)
[1] => Array
(
[op] => b
[nf] => 30
)
[2] => Array
(
[op] => 33
[nf] => male
)
[3] => Array
(
[op] => male
[nf] => american
)
)
希望这对您有所帮助:)