$arr[] = array('title' => 'Overview');
$arr[] =array('title' => 'General');
$arr[] =array('title' => 'History');
$arr[] =array('title' => 'Construction');
$arr[] =array('title' => 'Plan');
$arr[] =array('title' => 'Other');
$info_arr[] = array("title" => "General", text => "value1");
$info_arr[] = array("title" => "History", text => "value1");
$info_arr[] = array("title" => "Construction", text => "value1");
$info_arr[] = array("title" => "Plan", text => "value1");
我需要能够将这些数组合并在一起。所以它们看起来像这样。因为我需要循环整合数组。 其他,概述没有任何文本值,但仍需要放入数组中。
$new_arr[] = array("title" => "General", text => "value1", "title" => "History", text => "value1", "title" => "Construction", text => "value1"
,"title" => "Plan", text => "value1","title" => "Overview", text => "","title" => "Other", text => "");
我试过for循环(使用计数值),foreach循环,我认为array_intersect或array_diff没有看到解决问题。这应该不是那么困难,但我试图将一些非常糟糕的遗留代码拼凑在一起。或者立方体/荧光灯可能终于找到了我。
更新
while ($stmt->fetch()) {
$arr[] = array("title" => $Title);
}
和
while ($dstmt->fetch()) {
$info_arr[] = array("title" => $descriptionType, "descriptiontext" => $descriptionText); , "descriptiontext" => $val );
}
$ dstmt& $ stmt是查询。
我认为这样可行但不是那么多
$r = array_intersect($arr, $info_arr);
var_dump($r);
像这样的东西让我澄清一下:
$new_arr = array(array("title" => "General", text => "value1"),
array("title" => "History", text => "value1"),
array("title" => "Construction", text => "value1"),
array("title" => "Plan", text => "value1"),
array("title" => "Overview", text => ""),
array("title" => "Other", text => "")
);
答案 0 :(得分:1)
如果您想使用这两个数组,可以使用标题作为txtApplID
中的键。
$r
或者,您可以通过以与获取查询结果相同的方式构建foreach (array_merge($arr, $info_arr) as $x) {
$r[$x['title']]['title'] = $x['title'];
$r[$x['title']]['text'] = isset($x['text']) ? $x['text'] : '';
}
数组,返回一步并避免使用单独的数组:
$r
或者,理想情况下,您可以返回另一个步骤,避免通过使用while ($stmt->fetch()) {
$r[$Title] = array('title' => $Title, 'text' => '');
}
while ($dstmt->fetch()) {
$r[$descriptionType] = array("title" => $descriptionType, "text" => $descriptionText);
}
在一个查询中获得相同结果来进行单独查询,但问题中没有任何内容可以根据该问题提出任何具体建议
答案 1 :(得分:0)
正如评论中所述,您要求的确切$new_arr
是不可能的。但是,我认为这会给你一个类似的结果,应该适用于你的目的:
foreach ($info_arr as $infoArray) {
$found = array_search(array('title' => $infoArray['title']), $arr);
if (false !== false) {
unset($arr[$found]);
}
}
$new_arr = array_merge($info_arr, $arr);
它的工作原理是删除"重复"在执行$arr
之前,从原来的array_merge()
开始。
如果为text
中的其余项添加空$arr
值非常重要,请在array_merge()
之前执行此操作:
foreach ($arr as &$arrArray) {
$arrArray['text'] = '';
}
结果数组如下所示:
$new_arr[] = array(
array(
'title' => 'General',
'text' => 'value1',
),
array(
'title' => 'History',
'text' => 'value1',
),
array(
'title' => 'Construction',
'text' => 'value1',
),
array(
'title' => 'Plan',
'text' => 'value1',
),
array(
'title' => 'Overview',
'text' => '',
),
array(
'title' => 'Other',
'text' => '',
),
);