Я хочу передать несколько параметров функции в массиве. Сами параметры являются массивами строк.
У меня есть функция с именем new_action()
, которую я вызываю следующим образом:
new_action(array('actions' => array('ACTION1','ACTION2'), 'tables' => array('table1','table2')));
, и эта функция выглядит следующим образом:
public function new_action($params=array()) {
$tables = array();
$actions = array();
if(count($params)) {
foreach($params as $k => $v) {
$tables = ($k == 'tables') ? $v : array();
$actions = ($k == 'actions') ? $v : array();
}
// Do useful stuff with the variables here ...
var_dump($tables);
var_dump($actions);
// ======== ACTUAL OUTPUT: ========
// array(0) { }
// array(0) { }
// ======== EXPECTED OUTPUT: ========
// array(2) { [0]=> string(6) "table1" [1]=> string(6) "table2" }
// array(2) { [0]=> string(7) "ACTION1" [1]=> string(7) "ACTION2" }
}
}
Как видите, значение $v
внутри l oop (массива строк) никогда не копируется в переменную $tables
или $actions
вне l oop.
Я думаю, что это, скорее всего, проблема масштаба, но поиск ответов на другие вопросы, подобные этому, не прояснил решение для меня.
Как выполнить рефакторинг кода, чтобы я мог получить доступ к тем массивам, хранящимся в $v
, для каждого $k
за пределами foreach
l oop?