Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.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,我有一个类对象数组: class Foo { public $A; public $B; public $C; } 我需要一个新的C字段数组。有没有一种方法可以在不使用显式循环的情况下转换数组?讨厌在C#之后 您好,我相信您可以使用 $Cs = array_map(function($item) { return $item->C; }, $arr); 在PHP

我有一个类对象数组:

class Foo
{
    public $A;
    public $B;
    public $C;
}
我需要一个新的C字段数组。有没有一种方法可以在不使用显式循环的情况下转换数组?讨厌在C#之后

您好,

我相信您可以使用

$Cs = array_map(function($item) {
    return $item->C;
}, $arr);

在PHP<5.3中,可以将命名函数与数组映射一起使用('function\u name',$arr);或者
create_function()
,但我认为PHP5.3应该是现在的主流。不是lambda语法,但至少不需要外部函数。谢谢。顺便说一下:在C#中,您可以使用linq,因此不必使用显式循环..是的,但是$arr是Foo的数组,而不是单个实例。此外,我还必须从As和Bs中筛选生成的数组。
$Cs = array_map(function($item) {
    return $item->C;
}, $arr);
$arr = get_object_vars(new Foo());
var_dump($arr); // should give Array(3) { "A"=>NULL, "B"=>NULL, "C"=>NULL }