Php 数组的和键(如果匹配并排序)
我有一个数组,里面有3个数组 我必须合并它,但是如果三个数组中的任何一个数组的值与其他两个数组中的任何一个数组的值匹配,则键应该是sum 即。 [bing][10]与[google][10](url实际上没有清理,我错了)和[yahoo][10]匹配 因此,新合并的数组的第一个位置应该有[url][30],以此类推 我怎样才能做到这一点 我的阵列: 期望的结果(我只做了'http://stackoverflow.com/'匹配,键和):Php 数组的和键(如果匹配并排序),php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有一个数组,里面有3个数组 我必须合并它,但是如果三个数组中的任何一个数组的值与其他两个数组中的任何一个数组的值匹配,则键应该是sum 即。 [bing][10]与[google][10](url实际上没有清理,我错了)和[yahoo][10]匹配 因此,新合并的数组的第一个位置应该有[url][30],以此类推 我怎样才能做到这一点 我的阵列: 期望的结果(我只做了'http://stackoverflow.com/'匹配,键和): 您不能拥有键的分数,因为当两个条目的分数相同时,您可能会覆
您不能拥有键的分数,因为当两个条目的分数相同时,您可能会覆盖值。您可以做的是:
$urls = array();
array_walk_recursive($array, function ($url, $score) use (&$urls) {
$key = strtok($url, '&');
$urls[$key] = isset($urls[$key]) ? $urls[$key] + $score : $score;
});
arsort($urls);
print_r($urls);
给予
Array
(
[http://stackoverflow.com/] => 30
[http://en.wikipedia.org/wiki/Stack_overflow] => 17
[http://stackoverflow.net/] => 13
[http://stackoverflow.com/questions] => 12
[http://blog.stackoverflow.com/] => 10
[http://stackoverflow.com/users/login] => 9
…
你能用
var\u export
代替var\u dump
给那个数组吗?我太懒了,无法转换它。所以,给定那个数组,结果应该是什么?你真的在乎这些键是什么(如果是,为什么)还是只想要所有的唯一值?@Gordon-我会用它来编辑这个问题。@Gordon,谢谢。如何格式化数组以将其粘贴到此处?@DaveRandom值应完全匹配,检查所需结果,但我仅为“”执行此操作
$urls = array();
array_walk_recursive($array, function ($url, $score) use (&$urls) {
$key = strtok($url, '&');
$urls[$key] = isset($urls[$key]) ? $urls[$key] + $score : $score;
});
arsort($urls);
print_r($urls);
Array
(
[http://stackoverflow.com/] => 30
[http://en.wikipedia.org/wiki/Stack_overflow] => 17
[http://stackoverflow.net/] => 13
[http://stackoverflow.com/questions] => 12
[http://blog.stackoverflow.com/] => 10
[http://stackoverflow.com/users/login] => 9
…