我使用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];
}
我得到的结果和你不一样:
$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 )