我想问的问题只是出于好奇。为什么没有此代码的工作:使用foreach循环访问PHP数组
$table = [
'key1' => 'value1',
'key2' => 'value2',
];
foreach($table as $tb)
{
$tb = strtoupper($tb);
}
print_r($table);
我想问的问题只是出于好奇。为什么没有此代码的工作:使用foreach循环访问PHP数组
$table = [
'key1' => 'value1',
'key2' => 'value2',
];
foreach($table as $tb)
{
$tb = strtoupper($tb);
}
print_r($table);
我相信你期待值上成为case..In你需要的foreach &
这种情况下..
$table = [
'key1' => 'value1',
'key2' => 'value2',
];
foreach($table as &$tb)
{
$tb = strtoupper($tb);
}
print_r($table);
是的,确实如此。但为什么这样呢?我发布的代码中发生了什么?它肯定会改变循环中的数组值。它是否在循环关闭时删除它们? – user1615069
'&'意味着你引用了一个变量,所以在这样的变量上做的动作将反映回原来的 –
以及@Koen ... thnx .. –
您可以使用array_map
$table = [
'key1' => 'value1',
'key2' => 'value2',
];
$table = array_map("strtoupper", $table);
print_r($table);
如果你也有什么改变键为大写使用array_change_key_case
print_r(array_change_key_case($table, CASE_UPPER));
有趣,谢谢。 – user1615069
不客气 – Baba
你期望什么?错误是您的期望和实际结果之间的差异。只要你不期望任何事情,代码就可以工作。 – Oswald
哇,我的错误,它在代码中是foreach($ table为$ tb),只是复制粘贴问题。 – user1615069
不是很明显你还没有定义$ tbl。 – h0lyalg0rithm