PHP:将数组中的所有值设置为某个值

Mar*_*tin 28 php arrays

嗨想知道是否有办法在没有foreach的情况下执行此操作($ array为$ k => $ v).我知道它会起作用,但如果你知道,我正在寻找一种更优雅的方式.所以我的阵列就像:

1 = 231
2 = 432
3 = 324
Run Code Online (Sandbox Code Playgroud)

我翻了一下,它变成了:231 => 1, 432 =>2, 324 => 3.现在我需要做的是将所有值设置为'1'

Roc*_*mat 50

你可以使用array_fill_keys:

$array = array(
    1 => 231,
    2 => 432,
    3 => 324
);

$array = array_flip($array);

$array = array_fill_keys(array_keys($array), 1);
Run Code Online (Sandbox Code Playgroud)

  • @acme:我需要更多咖啡...... :-P (13认同)
  • 怎么样`array_fill_keys($ array,1);`只?你真的不需要调用array_flip,然后是array_keys :) (4认同)
  • 总是把它归咎于咖啡.:P +1 (3认同)

acm*_*cme 15

array_fill_keys()应该是你需要的:

$keys = array_keys($yourArray);
$filled = array_fill_keys($keys, 1);
Run Code Online (Sandbox Code Playgroud)


Mor*_*ews 11

对于PHP> 5.3,您可以使用匿名函数.

array_walk($array,function(&$value){$value=1;});

注意:值通过引用传递.


Xun*_*ius 5

我相信你正在寻找这个函数:array_fill()

从以上链接:

"使用num参数值填充一个数组,从start_index参数开始键."

虽然如果您的索引不是数字和/或不可枚举(例如,从231到324(包括231和324)),那么您可能会更好,如Rocket所说,array_fill_keys()或您的常规foreach.