如何获得多维数组到单数组php


How to get multidimensional array to single array php

我有以下数组包含数组名称,电子邮件,电话,地址

$result=Array( [name] => Array( [0] => Xyz1 [1] => xyz2 ) [email] => Array ( [0] => xyz1@gmail.com [1] => xyz2@gmail.com ) [phone] => Array ( [0] => 23423423-1 [1] => 23423423-2 ) [address] => Array ( [0] => xyz1 [1] => xyz2 ));    

我想让它像

下面那样是一个数组
$r1=Array ( [name] => xyz1 [email] => xyz1@gmail.com [phone] => 23423423-1 [address] => xyz1 );  
$r2=Array ( [name] => xyz2 [email] => xyz2@gmail.com [phone] => 23423423-2 [address] => xyz2 );

假设键通过它们的索引相互对应,即第一个电子邮件值对应第一个名称值等,您可以循环遍历索引和键来生成新的数组:

foreach(array_keys($result['name']) as $i) {
    $row = array();
    foreach(array_keys($result) as $key) {
        $row[$key] = $result[$key][$i];
    }
    print_r($row);
}

在给定的数组中,键是相同的,它们都包含一堆数据,可能有不同数量的条目。您可以使用array_keys来获取所有的键,并获取它们的相关数据,并将它们存储在相关的键中,即键0上的name将在最终结果0键中,以此类推。试试下面的代码:

<?php
    $r = array();
	$keys = array_keys($result); //name,email, etc...
	foreach ($keys as $value)
	{
	 	foreach ($result[$value] as $k => $v)
	 	{
	 		$r[$k][$value] = $v;
	 	}
	} 
	print_r($r);
?>

结果

Array ( 
[0] => Array ( [name] => Xyz1 [email] => xyz1@gmail.com [phone] => 23423423-1 [address] => xyz1 ) 
[1] => Array ( [name] => xyz2 [email] => xyz2@gmail.com [phone] => 23423423-2 [address] => xyz2 ) 
) 

尝试如下:

for($i=0; $i<=count($result['name']); $i++){
    $r[]=array('name'=>$result['name'][$i],'email'=>$result['email'][$i],'phone'=>$result['phone'][$i],'address'=>$result['address'][$i]);
}

您可以使用$r[0]访问您的第一个记录,例如$r[0]['name']