PHP:在多维数组中查找相同的键并合并结果
我有一个多维数组,如下所示:PHP:在多维数组中查找相同的键并合并结果,php,multidimensional-array,Php,Multidimensional Array,我有一个多维数组,如下所示: $array = ( [0] => array ( ['WS'] => array( [id] => 2, [name] => 'hello' ) ) ), [1] => array ( ['SS'] => array( [id] => 1,
$array = (
[0] => array (
['WS'] => array(
[id] => 2,
[name] => 'hello'
)
)
),
[1] => array (
['SS'] => array(
[id] => 1,
[name] => 'hello2'
)
)
),
[2] => array (
['WS'] => array(
[id] => 5,
[name] => 'helloAGAIN'
)
)
)
$array = (
['WS'] => array(
[0] => array(
[id] => 2,
[name] => 'hello'
),
[1] => array(
[id] => 5,
[name] => 'helloAGAIN'
)
),
['SS'] => array(
[0] => array(
[id] => 1,
[name] => 'hello2'
)
)
)
$array['WS'][] = array();
正如您所看到的,$array[0]和$array[2]具有相同的键[WS]。我需要一个函数来查找那些“相同的键”。之后,我会将这两个数组合并为一个。
f、 e
希望你们能理解我的问题。
问候
您可以在数组中循环并删除匹配的元素
$multiArray = array('0' => etc etc);
$matches = array();
foreach(multiArray as $key => $val)
{
$keyValToCheck = key($val);
if(!in_array($keyValToCheck, $matches))
{
$matches[] = $keyValToCheck; // add value to array matches
// remove item from array because match has been found
unset($multiArray[$key][$keyValToCheck]);
}
}
您可以在数组中循环并删除匹配的元素
$multiArray = array('0' => etc etc);
$matches = array();
foreach(multiArray as $key => $val)
{
$keyValToCheck = key($val);
if(!in_array($keyValToCheck, $matches))
{
$matches[] = $keyValToCheck; // add value to array matches
// remove item from array because match has been found
unset($multiArray[$key][$keyValToCheck]);
}
}
您只需消除阵列的第一级,就可以得到如下结果:
$array = (
[0] => array (
['WS'] => array(
[id] => 2,
[name] => 'hello'
)
)
),
[1] => array (
['SS'] => array(
[id] => 1,
[name] => 'hello2'
)
)
),
[2] => array (
['WS'] => array(
[id] => 5,
[name] => 'helloAGAIN'
)
)
)
$array = (
['WS'] => array(
[0] => array(
[id] => 2,
[name] => 'hello'
),
[1] => array(
[id] => 5,
[name] => 'helloAGAIN'
)
),
['SS'] => array(
[0] => array(
[id] => 1,
[name] => 'hello2'
)
)
)
$array['WS'][] = array();
这样,您可以向阵列中添加如下内容:
$array = (
[0] => array (
['WS'] => array(
[id] => 2,
[name] => 'hello'
)
)
),
[1] => array (
['SS'] => array(
[id] => 1,
[name] => 'hello2'
)
)
),
[2] => array (
['WS'] => array(
[id] => 5,
[name] => 'helloAGAIN'
)
)
)
$array = (
['WS'] => array(
[0] => array(
[id] => 2,
[name] => 'hello'
),
[1] => array(
[id] => 5,
[name] => 'helloAGAIN'
)
),
['SS'] => array(
[0] => array(
[id] => 1,
[name] => 'hello2'
)
)
)
$array['WS'][] = array();
您只需消除阵列的第一级,就可以得到如下结果:
$array = (
[0] => array (
['WS'] => array(
[id] => 2,
[name] => 'hello'
)
)
),
[1] => array (
['SS'] => array(
[id] => 1,
[name] => 'hello2'
)
)
),
[2] => array (
['WS'] => array(
[id] => 5,
[name] => 'helloAGAIN'
)
)
)
$array = (
['WS'] => array(
[0] => array(
[id] => 2,
[name] => 'hello'
),
[1] => array(
[id] => 5,
[name] => 'helloAGAIN'
)
),
['SS'] => array(
[0] => array(
[id] => 1,
[name] => 'hello2'
)
)
)
$array['WS'][] = array();
这样,您可以向阵列中添加如下内容:
$array = (
[0] => array (
['WS'] => array(
[id] => 2,
[name] => 'hello'
)
)
),
[1] => array (
['SS'] => array(
[id] => 1,
[name] => 'hello2'
)
)
),
[2] => array (
['WS'] => array(
[id] => 5,
[name] => 'helloAGAIN'
)
)
)
$array = (
['WS'] => array(
[0] => array(
[id] => 2,
[name] => 'hello'
),
[1] => array(
[id] => 5,
[name] => 'helloAGAIN'
)
),
['SS'] => array(
[0] => array(
[id] => 1,
[name] => 'hello2'
)
)
)
$array['WS'][] = array();
为什么不迭代它并重建数组呢?一次遍历和某种键查找数组应该可以覆盖它。为什么不直接遍历它并重建数组呢?一次通过和某种类型的密钥查找数组应该可以覆盖它。thx很多:)您的数组结构让我找到了问题的解决方案。我对构建阵列的想法非常复杂。thx很多:)您的阵列结构让我找到了问题的解决方案。我对构建阵列的想法非常复杂。谢谢。这对我来说是一个很好的解决办法。易于理解,效果良好。谢谢。这对我来说是一个很好的解决办法。易于理解和工作良好。