我有一个变量$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;
当我在$id
中使用array_walk()
变量时,显示错误。
消息:未定义的变量:id
任何解决方案?
感谢您的建议
答案 0 :(得分:6)
您可以使用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) {
答案 1 :(得分:2)
$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
)
)
答案 2 :(得分:0)
你可以使用如下函数将$ id传递给你的函数array_walk:
Traceback (most recent call last):
File "REDACTED", line 3, in <module>
tkvar = IntVar()
File "/home/redacted/apps/thonny/lib/python3.5/tkinter/__init__.py", line 351, in __init__
Variable.__init__(self, master, value, name)
File "/home/redacted/apps/thonny/lib/python3.5/tkinter/__init__.py", line 233, in __init__
self._root = master._root()
AttributeError: 'NoneType' object has no attribute '_root'
答案 3 :(得分:0)
变量的范围是定义它的上下文。在大多数情况下,所有PHP变量只有一个范围。此单一范围也涵盖包含和所需文件。
在函数外部使用全局关键字不是错误。有可能 如果文件包含在函数内部,则使用。
$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;
答案 4 :(得分:0)
将参数添加到此use()
,如果您要修改$id
,请使用&amp;参考转换,否则按值转换。
array_walk($value, function($v, $k) use ($id){});
或
array_walk($value, function($v, $k) use (&$id){});