如何使用foreach循环将现有数组的键更改为唯一值?

时间:2014-09-26 16:43:10

标签: php arrays

所以我试图将来自两个独立API的feed合并为一个,但首先我需要确保feed包含相同的键,以便我可以将两者合并在一起。在每个循环中,我存储了我希望为每个数组保留的值,但是,我希望每个值都有一个唯一的键而不是经典的[0],[1],[2]等。编号系统。如何获得$ value3为其拥有的每个值都有一个唯一的字符串键?

$googleArray = array();

foreach ($myEvents as $key => $value) {
    foreach ($value as $key2 => $value2) {
        // Remove unnecessary keys from google API arrays
        unset($value2[method], $value2[kind], $value2[status], $value2[htmlLink], $value2[created], $value2[updated], $value2[colorId], $value2[creator],$value2[organizer],$value2[iCalUID],$value2[sequence],$value2[reminders], $value2[etag],$value2[id],$value2[minutes]);

        //Make new keys for googleArray in order to store each list to its designated event

        $googleArray[$key2] = $value2;  

        // foreach ($value2 as $key3[summary] => $value3) {
            // Store desired values in new array
            // $googleArray[] = $value3;
        // }
    }
}

基本上,我正试图

$key2["summary"] = $key2["DESC1"];

成为密钥DESC1的摘要密钥

2 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题(从提供的信息开发有点困难),我认为您只需要声明一个数组,将原始$key2值映射到您希望它具有的新名称在$googleArray中,然后在该映射中执行查找以在插入时获取所需的键名。如,

$mapping = ['DESC1' => 'summary', 'DESC2' => 'foo'];
foreach(...) {
  foreach(...) {
    ...

    $googleArray[$mapping[$key2]] = $value2;
  }
}

答案 1 :(得分:0)

$googleArray = array();

foreach($myEvents as $key=>$value){

    if ( in_array($value['googleArray'], $googleArray) ) {

        continue;
    }

    $googleArray[] = $value['googleArray'];

    echo $value['googleArray'];

}