-1

我使用 preg_match 在网页中查找键和值。一些键是数字,例如 101357,但大多数是字符串。当我使用 array_combine 创建具有这些键和值的数组时,它将作为数字的键转换为从键 0 开始的有序数组元素:

成立:

"ABC"    => "Value1",
"101397" => "Value2",
"DEF"    => "Value3",
"401995" => "Value4"

所以 $keys = array("ABC","101397","DEF","401995") 和 $vals = array("Value1",...)

print_r(array_combine($keys, $vals)) produces:

"ABC" => "Value1"
0     => "Value2"
"DEF" => "Value3"
1     => "Value4"

所以我失去了键的值。在我找到更优雅的解决方案(如果可能)之前,我会将 array_combine 展开为

foreach($keys as $idx=>$key) 
{
    $result[$key] = $vals[$val];
}
4

1 回答 1

3

我没有得到和你一样的结果:

$array = array("ABC" => "Value1",
"101397" => "Value2",
"DEF" => "Value3",
"401995" => "Value4");

$keys = array_keys($array);
$values = array_values($array);

print_r(array_combine($keys, $values));

给出:

Array ( [ABC] => Value1 [101397] => Value2 [DEF] => Value3 [401995] => Value4 )

显示 和 的$keys$values

print_r($keys);
print_r($values);

Array ( [0] => ABC [1] => 101397 [2] => DEF [3] => 401995 )
Array ( [0] => Value1 [1] => Value2 [2] => Value3 [3] => Value4 )

即使在可能的情况下使用非字符串键也会产生相同的结果。

$array = array("ABC" => "Value1",
101397 => "Value2",
"DEF"  => "Value3",
401995 => "Value4");

$keys = array_keys($array);
$values = array_values($array);

print_r(array_combine($keys, $values));

Array ( [ABC] => Value1 [101397] => Value2 [DEF] => Value3 [401995] => Value4 )
于 2012-05-15T01:32:35.960 回答