Я пытаюсь выяснить, как преобразовать часть 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);
Но это просто дает ошибку разбора. Любая идея о том, как это будет написано? Я очень ценю это.
Нет необходимости указывать ссылку на $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
)
)
Надеюсь это поможет 🙂
Прежде всего вы должны передать обратный вызов в виде строки, когда вы хотите использовать обычную функцию. Второго нет use
до PHP 5.3, поэтому вам придется использовать глобальный.
И если вы соберете все воедино, вы получите:
function callbackFunction($op, $nf){
global $collection;
$collection[] = array(
'op' => $op,
'nf' => $nf
);
}
array_map("callbackFunction", $op_field, $nf_field);