您好想问是否有一种方法可以在没有 foreach 的情况下执行此操作($array as $k=>$v)。我知道它会起作用,但如果你知道的话,我正在寻找一种更优雅的方式。所以我的数组就像:
1 = 231
2 = 432
3 = 324
我翻转它,它变成了:231 => 1, 432 =>2, 324 => 3
。现在我需要做的是将所有值设置为'1'
您可以使用array_fill_keys
:
$array = array(
1 => 231,
2 => 432,
3 => 324
);
$array = array_flip($array);
$array = array_fill_keys(array_keys($array), 1);
array_fill_keys()应该是你需要的:
$keys = array_keys($yourArray);
$filled = array_fill_keys($keys, 1);
对于PHP >5.3,您可以使用匿名函数。
array_walk($array,function(&$value){$value=1;});
注意:值是通过引用传递的。
我相信你正在寻找这个函数:array_fill()
从上面的链接:
“用 value 参数的值的 num 个条目填充数组,键从 start_index 参数开始。”
尽管如果您的索引不是数字和/或不可枚举的(例如,从 231 到 324 包括在内),那么正如 Rocket 所说,使用 array_fill_keys()或您的常规 foreach可能会更好。
我在这个帖子上遇到了同样的问题,但我最终得到了另一种方法。
为什么使用 array_flip + array_keys 而不是简单地使用 array_values?
$array = array(
1 => 231,
2 => 432,
3 => 324
);
$array = array_fill_keys(array_values($array), 1);
您调用的任何方法,例如 array_map 或 fill_keys 仍将使用循环来遍历数组。似乎您需要诸如 array_map 之类的东西,可以在此处找到
如果您认为这更优雅,对每个人来说都是:)
array_replace(array_flip($columns), array_fill_keys($columns, 0));
如果您需要翻转键/值并将所有值重置为同一事物 (1),您可以通过一个简单的操作来完成:
$array = array_fill_keys($array, 1);
你的阵列
$array = [
1 => 231
2 => 432
3 => 324
];
变成
$array = [
231 => 1
432 => 1
324 => 1
];