如何从嵌套数组创建哈希表(php)

时间:2015-12-22 01:30:13

标签: php arrays hashtable

我有一个嵌套数组,其中包含我需要的信息。

array(66) {
  [0]=>
  array(2) {
    ["key"]=>
    string(1) "9"
    ["value"]=>
    string(1) "9"
  }
  [1]=>
  array(2) {
    ["key"]=>
    string(3) "104"
    ["value"]=>
    string(1) "3"
  }
  [2]=>
  array(2) {
    ["key"]=>
    string(3) "105"
    ["value"]=>
    string(1) "1"
  }
...

但是,这种格式并不十分有用。更有用的是

[9]=>9
[104]=>3
[105]=>1

等等。

不幸的是我的尝试

foreach ($arrayname as $key => $value) {
             $i= ((int) $value);
             $hashmap[$i] = ($value["value"]); 
            }

到目前为止只记录最终值,没有相关的密钥 array(1){[1] => string(3)“360”}。注意:如果密钥存储为字符串或int,则无关紧要!

2 个答案:

答案 0 :(得分:2)

这已经是一个哈希图数组。所以你应该这样使用它。 您对此处的密钥0, 1, ..不感兴趣。

$hashmap = array();
foreach ($arr as $value) {
    $hashmap[$value["key"]] = $value["value"]; 
}

然后你可以使用键/值对foreach方法检查这是否有效:

foreach($hashmap as $key => $value){
    echo 'map['.$key.']='.$value." \n<br/>";
}

答案 1 :(得分:1)

你的阵列是二维的。所以第一个维度代表一个键/值对。您的解决方案是从第一维而不是第二维获取密钥。

$hashmap = [];
foreach($arrayname as $pair) {
    $key           = $pair['key'];
    $value         = $pair['value'];
    $hashamp[$key] = $value;
}