如何访问 array_walk 内的其他变量?
How to access others variable inside of array_walk?
我有一个变量$id = 10
,需要在array_walk()
内部使用。像下面这样:
$id = 10;
array_walk($profile_items, function(&$a) {
$count = $this->db->where('profile_item_id', $a['id'])->where('cover_type_id', $id)->count_all_results('cover_type_profile_items_link');
$a['selected'] = $id;
});
echo "<pre>";
print_r($profile_items).exit;
当我在 array_walk()
中使用 $id
变量时,它显示错误。
Message: Undefined variable: id
有什么解决办法吗?
感谢您的建议
您可以使用 use
关键字:
array_walk($profile_items, function(&$a) use($id) {
所以,
$id = 10;
array_walk($profile_items, function(&$a) use($id) {
$count = $this->db->where('profile_item_id', $a['id'])->where('cover_type_id', $id)->count_all_results('cover_type_profile_items_link');
$a['selected'] = $id;
});
echo "<pre>";
print_r($profile_items);
要通过引用继承,请添加 & 符号:
array_walk($profile_items, function(&$a) use(&$id) {
您可以将 $id 传递给函数 array_walk,使用类似 :
$id = 10;
array_walk($profile_items, function(&$a) use($id){
$count = $this->db->where('profile_item_id', $a['id'])->where('cover_type_id', $id)->count_all_results('cover_type_profile_items_link');
$a['selected'] = $id;
});
echo "<pre>";
print_r($profile_items).exit;
变量的范围是定义它的上下文。大多数情况下,所有 PHP 变量都只有一个作用域。这个单一范围也涵盖包含文件和必需文件。
Using global keyword outside a function is not an error. It can be
used if the file is included from inside a function.
$id = 10;
array_walk($profile_items, function(&$a) {
global $id;
$count = $this->db->where('profile_item_id', $a['id'])->where('cover_type_id', $id)->count_all_results('cover_type_profile_items_link');
$a['selected'] = $id;
});
echo "<pre>";
print_r($profile_items).exit;
像这样给use()
添加参数,如果你想修改$id
,用&按引用传递,否则按值传递。
array_walk($value, function($v, $k) use ($id){});
或
array_walk($value, function($v, $k) use (&$id){});
$sample = [
['id'=>2, 'name' => 'one'],
['id'=>3, 'name' => 'two'],
];
$id = 2;
function test_alter(&$item1, $key, $prefix)
{
if($item1['id'] == $prefix){
$item1['name'] = $item1['name']." modified";
}
}
array_walk($sample, 'test_alter', $id);
echo "<pre>";
print_r($sample);
输出
Array(
[0] => Array
(
[id] => 2
[name] => one modified
)
[1] => Array
(
[id] => 3
[name] => two
)
)
我有一个变量$id = 10
,需要在array_walk()
内部使用。像下面这样:
$id = 10;
array_walk($profile_items, function(&$a) {
$count = $this->db->where('profile_item_id', $a['id'])->where('cover_type_id', $id)->count_all_results('cover_type_profile_items_link');
$a['selected'] = $id;
});
echo "<pre>";
print_r($profile_items).exit;
当我在 array_walk()
中使用 $id
变量时,它显示错误。
Message: Undefined variable: id
有什么解决办法吗?
感谢您的建议
您可以使用 use
关键字:
array_walk($profile_items, function(&$a) use($id) {
所以,
$id = 10;
array_walk($profile_items, function(&$a) use($id) {
$count = $this->db->where('profile_item_id', $a['id'])->where('cover_type_id', $id)->count_all_results('cover_type_profile_items_link');
$a['selected'] = $id;
});
echo "<pre>";
print_r($profile_items);
要通过引用继承,请添加 & 符号:
array_walk($profile_items, function(&$a) use(&$id) {
您可以将 $id 传递给函数 array_walk,使用类似 :
$id = 10;
array_walk($profile_items, function(&$a) use($id){
$count = $this->db->where('profile_item_id', $a['id'])->where('cover_type_id', $id)->count_all_results('cover_type_profile_items_link');
$a['selected'] = $id;
});
echo "<pre>";
print_r($profile_items).exit;
变量的范围是定义它的上下文。大多数情况下,所有 PHP 变量都只有一个作用域。这个单一范围也涵盖包含文件和必需文件。
Using global keyword outside a function is not an error. It can be used if the file is included from inside a function.
$id = 10;
array_walk($profile_items, function(&$a) {
global $id;
$count = $this->db->where('profile_item_id', $a['id'])->where('cover_type_id', $id)->count_all_results('cover_type_profile_items_link');
$a['selected'] = $id;
});
echo "<pre>";
print_r($profile_items).exit;
像这样给use()
添加参数,如果你想修改$id
,用&按引用传递,否则按值传递。
array_walk($value, function($v, $k) use ($id){});
或
array_walk($value, function($v, $k) use (&$id){});
$sample = [
['id'=>2, 'name' => 'one'],
['id'=>3, 'name' => 'two'],
];
$id = 2;
function test_alter(&$item1, $key, $prefix)
{
if($item1['id'] == $prefix){
$item1['name'] = $item1['name']." modified";
}
}
array_walk($sample, 'test_alter', $id);
echo "<pre>";
print_r($sample);
输出
Array(
[0] => Array
(
[id] => 2
[name] => one modified
)
[1] => Array
(
[id] => 3
[name] => two
)
)