2014-02-23 40 views
0

我需要多维数组的帮助。我需要从PHP中的两个其他数组输出/创建一个新数组。我知道我的例子是错误的,但这里是我有什么,几乎工作的例子:在foreach循环中输出2个不同多维数组的数组1

$myarray = array(
     'customid1' = array(
        name=> 'Tim', 
        address=> '23 Some Address' 
       ), 
     'customid2' = array(
        name=> 'John', 
        address=> 'Another Address' 
       ) 
); 

$keys = array(); 
$values = array(); 

foreach($myarray as $key => $keyitem) { 
     $getkeys = $myarray[$key]['name'] .'-and-a-string'; 
     $keys[] = $getkeys; 
} 

foreach($myarray as $value => $valueitem) { 
     $getvalues = 'some-other-text-'. $myarray[$key]['address']; 
     $values[] = $getvalues;   
    } 

$newarray = array_combine($keys, $values); 

上面的代码会得到所有的按键右侧,除了新的数组中该键的值。相反,它会显示数组中所有键的最后一个值。所以我print_r的结果将类似于:

Array (Tim-and-a-string => some-other-text-Another Address 
     John-and-a-string => some-other-text-Another Address 
) 

正如你所看到的,“一些,其他的文本,另一个地址”上所有的人出现,但第二项“蒂姆 - 和一个字符串的需求有“一些,其他文本-23的一些地址”包括

回答

2

这是一个很小的错误,但您使用了错误的变量:

您在第二foreach()使用$key代替$value

$key将是相同的,因为新的foreach循环不会覆盖之前在循环的最后关键。

这应该工作:

$myarray = array(
     'customid1' = array(
        name=> 'Tim', 
        address=> '23 Some Address' 
       ), 
     'customid2' = array(
        name=> 'John', 
        address=> 'Another Address' 
       ) 
); 

$keys = array(); 
$values = array(); 

foreach($myarray as $key => $keyitem) { 
     $getkeys = $myarray[$key]['name'] .'-and-a-string'; 
     $keys[] = $getkeys; 
} 

foreach($myarray as $value => $valueitem) { 
     $getvalues = 'some-other-text-'. $myarray[$value]['address']; 
     $values[] = $getvalues;   
    } 

$newarray = array_combine($keys, $values); 
+0

谢谢,这是我需要的。不能相信我错过了这一点。 – codenift

+0

不客气。 – Anonymous

0

试试这个:

$newarray = array_combine(
    array_values(array_map(function ($v) { return $v['name'].'-and-a-string'; }, $myarray)), 
    array_values(array_map(function ($v) { return 'some-other-text-'.$v['address']; }, $myarray)) 
);