有人可以帮助找到更好的解决方案来解决下面的代码。
这是我现有的解决方案:
$list = '54,78,3,5';
$list = explode(",",$list);
foreach($list as $k => $v) { $compare[$v] = 1; }
当我在$ list上运行array_flip而不是foreach时,它会返回一个这样的数组:
Array(
54 => 0,
78 => 1,
...
)
我需要这个,所以已经采用这种格式的另一个数组可以与IF语句进行比较:
Array(
54 => 1,
78 => 1,
...
)
答案 0 :(得分:2)
$list = '54,78,3,5';
$list = explode(",",$list);
$array = array_combine($list, array_fill(0, count($list), 1));
print_r($array);
Array
(
[54] => 1
[78] => 1
[3] => 1
[5] => 1
)
array_fill()
将创建一个数组,其所有值均为1
,与$list
数组的大小相同。 array_combine()
然后创建一个新数组,其值为$list
作为键,array_fill()
创建的值;
答案 1 :(得分:0)
您是否需要原始$list
作为变量?难道你不能从数据来源的一开始就把它变成一个数组,并在值上附加1或true吗?
否则,在当前foreach
之前,添加一个新循环并通过$list
(您将其制作成一个数组)并创建一个新数组,将所需值附加到每个键(从中获取的键) $list
):
foreach ($list as $key)
{
$new_array[$key] = 1;
}