【问题标题】:Combine array and add key for each array组合数组并为每个数组添加键
【发布时间】:2020-03-22 16:56:18
【问题描述】:

我只是找不到合适的问题

相当多的从这里合并数组

$arr1 = ["temp1", "temp2", "temp3"];
$arr2 = [5, 7, 2];

到这里

$combined = [["name" => "temp1", "number" => 5], ["name" => "temp2", "number" => 7], ["name" => "temp3", "number" => 2]];

除了 foreach 之外,有什么想法可以用最有效的方式来做吗?

【问题讨论】:

  • 您是否尝试过解决这个问题?过程中遇到了哪些困难?
  • 我找不到有效的命令
  • 当然我可以用foreach来做,我只是想知道是否有针对这个问题的特定功能。
  • 你知道使用foreach 有时可能比一些内置函数更有效。可以说,这些函数比使用 foreach 更具可读性。它们的性能差异可以忽略不计。此外,您可以创建一个函数来获取这两个数组并为您返回组合结果。

标签: php arrays laravel laravel-5


【解决方案1】:
$arr1 = ["temp1", "temp2", "temp3"];
$arr2 = [5, 7, 2];
foreach($arr1 as $key => $value)
{
  $r[$key]['name'] = $value;
        $r[$key]['number'] = $arr2[$key];
    }
  print_r($r);

【讨论】:

    【解决方案2】:

    内置函数array_map实际上可以处理多个数组:

    $result = array_map(function($value1, $value2) {
        return ["name" => $value1, "number" => $value2];
    }, $arr1, $arr2);
    

    Here are 与简单 foreach 比较的一些基准测试

    【讨论】:

    • 谢谢。这是我正在寻找的答案。当我阅读文档时,我有点错过了 array_map 可以接收 2 个参数。
    【解决方案3】:

    您可以执行以下代码来获取您的结果

    $arr1 = ["temp1", "temp2", "temp3"];
    $arr2 = [5, 7, 2];
    $count = count($arr1);
    $combined = array();
    for($i=0;$i<$count;$i++){
        $combined[$i]['name'] = $arr1[$i];
        $combined[$i]['number'] = $arr2[$i];
    }
    

    【讨论】:

      【解决方案4】:

      你可以使用foreach循环,

      $result = [];
      foreach($arr1 as $key => $value){
          $resutl[] = array("name"=>$value,"number"=>$arr2[$key]);
      }
      

      【讨论】:

      • 除了 foreach 以外,还有什么更高效的方法吗?
      • 我只是在说明问题的内容,仅此而已。
      猜你喜欢
      • 2018-11-27
      • 2019-02-28
      • 1970-01-01
      • 1970-01-01
      • 2013-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      相关资源
      最近更新 更多