[英]Mergin two arrays but keep indexes
因此,我需要將這兩個數組合並為一個並保留索引。 我嘗試了其他方法,例如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)
}
}
有什么想法可以實現這一目標嗎?
嘗試這個:
$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);
如果您不僅要添加名稱,年齡,還要添加電子郵件或以后添加其他內容,這是我以前使用過的更可重用的決定。
在下面的代碼中發布帶有解釋性注釋的代碼。
<?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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.