在数组映射函数PHP中使用变量
我的任务是创建两个数组: Array_1=选项1的所有可能选项列表 Array_2=当选项1==Array_1[0]时,选项2的所有可能选项列表 考虑到这些排在数组映射函数PHP中使用变量,php,arrays,Php,Arrays,我的任务是创建两个数组: Array_1=选项1的所有可能选项列表 Array_2=当选项1==Array_1[0]时,选项2的所有可能选项列表 考虑到这些排 $rows = [ (object) ['option_one' => 'large mug', 'option_two' => 'one color print'], (object) ['option_one' => 'large mug', 'option_two' =>
$rows = [
(object) ['option_one' => 'large mug', 'option_two' => 'one color print'],
(object) ['option_one' => 'large mug', 'option_two' => 'two color print' ],
(object) ['option_one' => 'large mug', 'option_two' => 'three color print' ],
(object) ['option_one' => 'small mug', 'option_two' => 'one color print' ],
(object) ['option_one' => 'small mug', 'option_two' => 'two color print' ],
];
那么我的输出将是
数组_1=['大杯子','小杯子']
数组_2=['单色打印'、'双色打印'、'三色打印']
我已经尝试使用数组映射来完成这项工作,如下所示
$option_one_arr = array_unique ( array_map(function($row) { return $row->option_one; }, $rows) );
$option_two_arr = array_unique ( array_map(function($row) {
// ($option_one_arr == NULL) == TRUE
if ($row->option_one === $option_one_arr[0])
return $row->option_two;
}, $rows) );
$to_render = [$option_one_arr, $option_two_arr];
echo '<pre>';
var_dump($to_render);
$option\u one\u arr=array\u unique(数组映射(函数($row){return$row->option\u one;},$rows));
$option\u two\u arr=array\u unique(array\u map)(函数($row){
//($option_one_arr==NULL)==TRUE
如果($row->option\u one===$option\u one\u arr[0])
返回$row->选项二;
}美元行);
$to_render=[$option_one_arr,$option_two_arr];
回声';
var_dump($to_render);
但是,$option_one_arr在第二个数组映射内始终=NULL,尽管在第二个数组映射外是正确的
想法?PHP中的所有函数的作用域都是有限的。除非将$option\u one\u arr变量导入函数,否则无法在函数中访问该变量 使用匿名函数或闭包,可以使用
use
导入变量
PHP中的所有函数都有一个有限的作用域。除非将$option\u one\u arr变量导入函数,否则无法在函数中访问该变量 使用匿名函数或闭包,可以使用
use
导入变量
array_map(function($row) use ($option_one_arr) {
// ($option_one_arr == NULL) == TRUE
if ($row->option_one === $option_one_arr[0])
return $row->option_two;
}, $rows);