PHP如何将数组值转为键并设固定值true?无需foreach循环
回答
当然有!PHP 里正好有个专门适配这种需求的内置函数——array_fill_keys(),完全不用写foreach循环来手动构建新数组。
核心解决方案:array_fill_keys()
这个函数的作用就是将传入的数组元素作为新数组的键名,同时给所有键设置一个固定的对应值,完美匹配你的需求。
示例代码:
// 原数组 $originalArray = ['lorem ipsum', 'dolor sit amet', 'consectetur adipiscing elit']; // 一键转换 $resultArray = array_fill_keys($originalArray, true);
执行后$resultArray的结构就是你想要的:
Array ( 'lorem ipsum' => true, 'dolor sit amet' => true, 'consectetur adipiscing elit' => true )
替代方案(兼容旧版本PHP)
如果你的PHP版本特别老(不过array_fill_keys()从PHP 5.2.0就已支持,现在几乎没人用这么旧的版本了),可以用array_combine()配合array_fill()来实现:
$resultArray = array_combine( $originalArray, array_fill(0, count($originalArray), true) );
原理是先用array_fill()生成一个和原数组长度相同、所有元素都是true的数组,再通过array_combine()把原数组的元素作为键,填充好的数组作为值组合起来。
关于array_flip()的补充
你提到的array_flip()确实没法满足需求,因为它只是交换原数组的键和值,没法统一设置固定的true值,所以确实不适用这个场景。
内容的提问来源于stack exchange,提问作者MAX POWER
相关产品推荐
相关产品推荐

