请问以下数据怎么最快方法转化指定格式二维array

数据1:

$name = ['xiaoming', 'xiaojun', 'xiaohu'];
$age = [22, 18, 75];

我最后要的数据格式:

怎么最快方法转化成以下格式,因为有上百万条数据,$name$age的长度是对等的相同的。

[
    ['name' = 'xiaomin', 'age' => 22],
    ['name' = 'xiaojun', 'age' => 18],
    ['name' = 'xiaohu', 'age' => 75]
]

或者我转为数据1再转为我要的数据格式,这样是不对的,原始数据是从 data.txt 文件中获取的

xiaoming--22
xiaojun--18
xiaojun--75

提取代码,最终获取到了 数据1 的格式

//laravel的写法,获取文件全部内容
$Str = Storage::get('data.txt');
preg_match_all('/([a-z]+)--([0-9]+)/i', $Str, $Aarray);
// $Aarray[1]是名称 $Aarray[2]
$Carray = array_combine($Aarray[1], $Aarray[2]);
阅读 2.1k
2 个回答

使用 array_map 来处理就好了,

<?php

// php 7.4+
$names = ['xiaoming', 'xiaojun', 'xiaohu'];
$ages  = [22, 18, 75];

$result = array_map(fn($name, $age) => compact('name', 'age'), $names, $ages);

var_dump($result);

// < php 7.4

$result = array_map(function ($name, $age) {
    return compact('name', 'age');
}, $names, $ages);

var_dump($result);

PHP array_combine() 函数

<?php
$fname=array("Peter","Ben","Joe");
$age=array("35","37","43");

$c=array_combine($fname,$age);
print_r($c);//Array ( [Peter] => 35 [Ben] => 37 [Joe] => 43 )
?>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题