簡體   English   中英

根據數組中的值在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來說沒有問題。

考慮具有以下結構的表:

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

我想沒有太多要解釋的東西,但是請隨時詢問是否有任何不清楚的地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM