我需要一些多维数组的帮助。我需要从PHP中的其他两个数组输出/创建一个新数组。我知道我的例子是错的,但这是我所拥有的几乎可行的例子:
$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
)
正如你所看到的,'some-other-text-Another-Address'出现在所有这些上,但是第二个键'Tim-and-a-string'需要'some-other-text-23 Some Address '包括
答案 0 :(得分:2)
这是一个非常小的错误,但您使用的是错误的变量:
您在第二个$key
中使用的是$value
而不是foreach()
。
$key
将与循环中的最后一个键相同。
这应该有效:
$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);
答案 1 :(得分: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))
);