分组关联数组

时间:2018-01-10 10:39:03

标签: php arrays

我希望能够将Associative Arrays与他们的键组合在一起。到目前为止,我已经失去了使用什么语法。

截至目前,我有代码,

$associativeArray = array("Ripe Mango"=>"Yellow", "Strawberry"=>"Red", "Lemon"=>"Yellow");
groupByColor($associativeArray);

function groupByColor($groupedArray)
{
  return $groupedArray;
}

我的目标是在将array分组时返回["Yellow"=>["Ripe Mango", "Lemon"], "Red"=>["Strawberry"]],理想的结果将是这样的;

running_status

有关使用何种方法的任何提示?

5 个答案:

答案 0 :(得分:3)

内部功能执行foreach()

<?php

$associativeArray = array("Ripe Mango"=>"Yellow", "Strawberry"=>"Red", "Lemon"=>"Yellow");

function groupByColor($associativeArray){
    $final_array = [];
    foreach($associativeArray as $key=>$val){
        $final_array[$val][] = $key;
    }

   return $final_array;  
}
print_r(groupByColor($associativeArray));

输出: - https://eval.in/933011

注意: - 您可以将groupByColor($associativeArray)返回的数组分配给新变量并打印该变量,如下所示: -

$color_array = groupByColor($associativeArray);
print_r($color_array);

答案 1 :(得分:1)

您可以使用array_walk函数来表示数组的每个值:

<?php
$array = ["Ripe Mango"=>"Yellow", "Strawberry"=>"Red", "Lemon"=>"Yellow"];
$result = [];
array_walk($array, function ($value, $key) use (&$result) {
    $result[$value][] = $key;
});

print_r($result);

答案 2 :(得分:0)

您可以通过处理每个密钥并将值转换为密钥并检查是否存在然后附加到其他位置来创建它

function groupByColor ($groupedArray) {
  $result = array();
  foreach ($groupedArray as $key=>$val) {
    if (array_key_exists($val, $result)) {
      $result[$val][] = $key;
    } else {
      $result[$val] = array();
    }
  }
  return $result;
}

答案 3 :(得分:0)

foreach()通过你的数组并添加一个颜色为关键字的新数组:

<?php
$associativeArray = array("Ripe Mango"=>"Yellow", "Strawberry"=>"Red", "Lemon"=>"Yellow");
$new = groupByColor($associativeArray);
var_dump($new);

function groupByColor($groupedArray)
{
    foreach ( $groupedArray as $key => $color ) {
        $tmp[$color][] = $key;
    }
    return $tmp;
}

答案 4 :(得分:0)

我知道如何做的唯一方法就是循环。

<!DOCTYPE html>
<html>
<body>

<?php
$associativeArray = array("Ripe Mango"=>"Yellow", "Strawberry"=>"Red", "Lemon"=>"Yellow");

$data = groupByColor($associativeArray);
print_r($data);

function groupByColor($groupedArray)
{
    foreach ($groupedArray as $key => $value) {
        $final[$value][] = $key;
     } 

    return $final;
}
?>

</body>
</html>