如何基于两个2d数组共享的唯一值将一个数组合并到另一个2d数组中?
数组:
$arr1 = [
"First" =>[
"Name" => "John",
"Id" => 123
],
"Second" =>[
"Name" => "Peter",
"Id" => 45
]
];
$arr2 = [
"First" =>[
"Age" => 34,
"Id" => 123
],
"Second" =>[
"Age" => 24,
"Id" => 45
]
];
$n = array_merge($arr1, $arr2);
var_dump $ n时的当前输出:
array(2) {
["First"]=>
array(2) {
["Age"]=>
int(34)
["Id"]=>
int(123)
}
["Second"]=>
array(2) {
["Age"]=>
int(24)
["Id"]=>
int(45)
}
}
所需的输出:
array(2) {
["First"]=>
array(2) {
["Name"]=>
String("John")
["Age"]=>
int(34)
["Id"]=>
int(123)
}
["Second"]=>
array(2) {
["Name"]=>
String("Peter")
["Age"]=>
int(24)
["Id"]=>
int(45)
}
}
当然,仅通过合并两个数组就不能解决我的问题,但是我只是想知道我应该采用哪种方法来做到这一点。
答案 0 :(得分:5)
假设数组的这种结构,可以使用array_replace_recursive
。
<h:body>
<f:view transient="true">
<tp:header/>
<tp:searchForm/>
<div id="results">
</div>
<h:panelGroup id="dTable" class="container">
</h:panelGroup>
</f:view>
<f:view transient="true">
<div class="jobEntity">
<div class="job-container-header">
<h4>#{testBean.jobEntity.toString()}</h4>
<c:if test="#{testBean.jobEntity.validURLConnection}">
<a href="#{testBean.jobEntity.pGradeDescriptionLink}"
class="btn btn-info-One"
target="_blank">[ Test ]</a>
</c:if>
<h4>#{testBean.jobEntity.mu} - #{testBean.jobEntity.muDescription}</h4>
<h4>#{testBean.jobEntity.specialNotes}</h4>
<h4>#{testBean.jobEntity.syRgeMnSepMsg}</h4>
</div>
<c:if test="${testBean.jobEntity.sectionToDisplay eq 'Range'}">
<table class="table">
<tbody>
<tr>
<th></th>
<c:forEach var="stepNumber" begin="1" end="#{testBean.jobEntity.stepSize}">
<th>Step #{stepNumber}</th>
</c:forEach>
</tr>
<c:forEach items="#{testBean.jobEntity.jobRows}" var="jobRow">
<tr>
<th>#{jobRow.rateType}</th>
<c:forEach items="#{jobRow.steps}" var="step">
<td>#{step.amount}</td>
</c:forEach>
</tr>
</c:forEach>
</tbody>
</table>
</c:if>
</div>
有人可以说您可以使用array_merge_recursive
,但不能。由于两个数组中都有相同的键($n = array_replace_recursive($arr1, $arr2);
),因此生成的数组将没有您期望的结构。但是,如果两个数组中都有不同键-Id
也是一个选择。