【问题标题】:array_flip with an array in the valuearray_flip 值中有一个数组
【发布时间】:2017-06-05 08:11:21
【问题描述】:

简单的一个(但尚未解决):这是我的数组

[
 [
   "role" => "admin",
   "name" => [
     "Felipy",
     "Ivan",
   ],
 ],
 [
   "role" => "user",
   "name" => [
     "Michel",
     "Paul",
     "Tay",
 ],
]

我很想看到这个结果:

[
 "Felipy" => "admin",
 "Ivan" => "admin",
 "Michael" => "user",
 "Paul" => "user",
 "Tay" => "user",
]

我已经尝试过array_flip

【问题讨论】:

  • 试试别的)

标签: php arrays array-flip


【解决方案1】:

试试这个:

foreach ($yourArr as $role) {
 foreach ($role['name'] as $user) {
    $arr[$user] = $role['role'];
 }
}

【讨论】:

    【解决方案2】:

    试试这个DEMO

    $original = [
         [
           "role" => "admin",
           "name" => [
             "Felipy",
             "Ivan",
           ],
         ],
         [
           "role" => "user",
           "name" => [
             "Michel",
             "Paul",
             "Tay",
            ],
          ]
        ];
        $arr = [];
    
        foreach ($original as $value)
        {
           foreach($value['name'] as $name)
           {
               $arr[$name] = $value['role'];
           }
        }
    

    【讨论】:

      【解决方案3】:

      试试这个Live demo

      $array = [
       [
         "role" => "admin",
         "name" => [
           "Felipy",
           "Ivan",
         ]
       ],
       [
         "role" => "user",
         "name" => [
            "Michel",
            "Paul",
            "Tay"
         ]
       ]
      ];
      
      $result = array_reduce($array, function($carry, $key) {
          foreach ($key['name'] as $name)
              $carry[$name] = $key['role'];
          return $carry;
      }, []);
      
      var_dump($result);
      

      【讨论】:

        【解决方案4】:

        不太清楚但仍然有效的解决方案:

        $a = [
         [
           "role" => "admin",
           "name" => [
             "Felipy",
             "Ivan",
           ],
         ],
         [
           "role" => "user",
           "name" => [
             "Michel",
             "Paul",
             "Tay",
            ],
         ],
        ];
        
        $r = [];
        foreach ($a as $item) {
            $r = array_merge($r, array_fill_keys($item['name'], $item['role']));
        }
        echo'<pre>',print_r($r),'</pre>';
        

        【讨论】:

        • 不知道array_fill_keys这个方法!谢谢!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多