根据php中的数组键值内的值

According to the values within the array key value in php

我有多个这样的数组:

$value1 = array ("10" => "car", "20" => "home", "30" => "ball");
$value2 = array ("50" => "car", "60" => "home", "70" => "ball");
$value3 = array ("100" => "car", "110" => "home", "120" => "ball");

现在我想按值合并这些数组,同时合并将键值加在一起。

伪代码:

$endvalue = $value1 + $value2 + $value3;

print_r ($endvalue);

预期输出:

"160" => "car"
"190" => "home"
"220" => "ball"

我有这样一个数据库;

name    facebookCount   tweetCount   googleCount

 car    20              50           100
home    50              60           10
ball    30              10           70

..我想找到最共享的值..

喜欢;

汽车 (20 + 50 + 100)

家 (50+ 60 + 10)

球 (30 + 10 + 70)

..并列出

汽车>家>球

你能帮帮我吗?

使用array_valuesarray_combinearray_search函数非重复键的输入数组的解决方案:

...
$arrList = [$value1, $value2, $value3];  // wrapping input arrays with outer array
$names = array_combine(array_values($value1), array_fill(0, count($arrList), 0));  // getting base names list

foreach ($names as $k => &$num) {
    foreach ($arrList as $arr) {
        $num += (int) array_search($k, $arr);
    }
}

print_r($names);

我认为最终的数组应该是一个关联数组,因为在某些情况下分组名称的总和可能相同

输出:

Array
(
    [car] => 160
    [home] => 190
    [ball] => 220
)

SQL 解决方案在您的情况下可能会更快,而且实际上非常简单。 SQL.

简单算术没问题

考虑具有以下结构的 table:

CREATE TABLE `social` (
  `name` varchar(50) NOT NULL,
  `facebook` int(11) NOT NULL,
  `twitter` int(11) NOT NULL,
  `google` int(11) NOT NULL,
  PRIMARY KEY (`name`)
);

然后这个查询:

SELECT name, (facebook + twitter + google) as shares FROM social
ORDER BY shares DESC

给出以下结果:

name    shares
car     170
home    120
ball    110

我想解释不多,但如果有任何不清楚的地方,请随时询问。