所以我需要将这两个数组合并为一个并保留索引。我尝试了array_merge
,array_merge_recursive
等不同的东西,但我无法理解。
array(3) {
[0]=>
string(4) "Peter"
[1]=>
string(4) "Josh"
[2]=>
string(4) "Jasper"
}
array(3) {
[0]=>
string(2) "18"
[1]=>
string(2) "19"
[2]=>
string(2) "25"
}
这就是我希望它的样子:
array(3) {
[0]=>
array(2) {
["name"]=>
string(5) "Peter"
["age"]=>
int(18)
}
[1]=>
array(2) {
["name"]=>
string(4) "Josh"
["age"]=>
int(19)
}
}
我是如何实现这一目标的?
答案 0 :(得分:3)
试试这个:
$array1 = array(0 => 'Peter', 1 => 'Josh', 2 => 'Jasper');
$array2 = array(0 => '18', 1 => '19', 2 => '25');
for($i = 0; $i<count($array1); $i++){
$newArray[] = array("name" => $array1[$i], "age" => $array2[$i]);
}
var_dump($newArray);
答案 1 :(得分:1)
这是我之前使用过的更可重复的决定,以防您想要添加名称,年龄,电子邮件或其他更新的内容。
在代码下方发布解释性评论。
<?php
// Array containing names
$namesArr = array(
'Peter',
'Josh',
'Jasper'
);
// Array containing ages
$agesArr = array(
18,
19,
25
);
$arrayDesign = array(
'name' => $namesArr,
'age' => $agesArr
);
/**
* Combines given array design into one grouped by keys.
* Example Input:
* $design => array(
* 'name' => array('Name1', 'Name2'),
* 'age' => array(10, 20)
* );
* Example Output:
* $output => array(
* 0 => array(
* 'name' => 'Name1',
* 'age' => 10
* ),
* 1 => array(
* 'name' => 'Name2',
* 'age' => 20
* )
* );
*
* @param Array $arrayDesign
*
* @return Array combined array
*/
function combineArraysByKeys($arrayDesign) {
// Holds results
$results = array();
// Get size of first element from the design, so we'll know the size of rest elements.
$designElementSize = count($arrayDesign[array_keys($arrayDesign)[0]]);
// Count from-to elements
for($c = 0; $c < $designElementSize; $c++) {
// Define array as part of results to be added after population
$arrayPart = array();
// Loop thru all keys and get values
foreach(array_keys($arrayDesign) as $key) {
// Assign value to key
$arrayPart[$key] = $arrayDesign[$key][$c];
}
// Add to results array
$results[] = $arrayPart;
}
return $results;
}
$result = combineArraysByKeys($arrayDesign);
echo "<PRE>";
print_r($result);
die();