我创建了一个工作正常的数组:
$user_list_args = array(
'role__in' => array('editor', 'author', 'administrator' ),
);
$user_list = get_users($user_list_args);
$user_list_array = array();
foreach ( $user_list as $user ) {
$user_list_array[] = $user->user_nicename;
}
然后我想在另一个设置如下的数组中显示它:
array(
'id' => 'task-users',
'label' => 'User(s)',
'type' => 'select',
'options' => array(
'tom',
'jerry',
),
),
我想从数组中将选项更改为动态:
private $fields = array(
array(
'id' => 'task-users',
'label' => 'User(s)',
'type' => 'select',
'options' => array($user_list_array),
),
);
这会产生错误:
致命错误:常量表达式包含无效操作
有人能指出我正确的方向吗?我使用的是PHP7,如果有帮助,但也可以在旧版本上使用。
由于
答案 0 :(得分:1)
您无法使用变量声明类属性。如果需要将类似值赋值给属性,请使用构造函数方法并在那里执行。也许是这样的:
private $fields;
public function __construct() {
// your code to define $user_list_array somewhere here
// or passed to constructor when you instantiate the class
$this->fields = array(
array(
'id' => 'task-users',
'label' => 'User(s)',
'type' => 'select',
'options' => array($user_list_array),
)
);
}
http://php.net/manual/en/language.oop5.properties.php:
此声明可能包括初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估。
答案 1 :(得分:0)
你的加入没有回应,这是完全有效的:
<?php
$user_list_array=array(
'tom',
'jerry',
);
$f= array(
'id' => 'task-users',
'label' => 'User(s)',
'type' => 'select',
'options' => array($user_list_array),
);
print_r($f);
输出:
Array
(
[id] => task-users
[label] => User(s)
[type] => select
[options] => Array
(
[0] => Array
(
[0] => tom
[1] => jerry
)
)
)
OR:
<?php
$user_list_array=array(
'tom',
'jerry',
);
$f= array(
'id' => 'task-users',
'label' => 'User(s)',
'type' => 'select',
'options' => $user_list_array,
);
print_r($f);
输出:
Array
(
[id] => task-users
[label] => User(s)
[type] => select
[options] => Array
(
[0] => tom
[1] => jerry
)
)