Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在数组映射函数PHP中使用变量_Php_Arrays - Fatal编程技术网

在数组映射函数PHP中使用变量

在数组映射函数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' =>

我的任务是创建两个数组:

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' => '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);