根据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_values
、array_combine
和array_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
我想解释不多,但如果有任何不清楚的地方,请随时询问。
我有多个这样的数组:
$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_values
、array_combine
和array_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
我想解释不多,但如果有任何不清楚的地方,请随时询问。