Php 分组关联数组
我希望能够将关联数组与其`键分组。到目前为止,我不知道该使用什么语法 到现在为止,我有这样的代码Php 分组关联数组,php,arrays,Php,Arrays,我希望能够将关联数组与其`键分组。到目前为止,我不知道该使用什么语法 到现在为止,我有这样的代码 $associativeArray = array("Ripe Mango"=>"Yellow", "Strawberry"=>"Red", "Lemon"=>"Yellow"); groupByColor($associativeArray); function groupByColor($groupedArray) { return $groupedArray; } 我
$associativeArray = array("Ripe Mango"=>"Yellow", "Strawberry"=>"Red", "Lemon"=>"Yellow");
groupByColor($associativeArray);
function groupByColor($groupedArray)
{
return $groupedArray;
}
我的目标是在分组时返回数组,理想的结果如下
[黄色=>[成熟芒果、柠檬],红色=>[草莓]]
有关于使用什么方法的提示吗?函数内部的操作
您可以通过处理每个键并将值转换为键,检查是否存在,然后附加到该键,或者创建它来实现这一点
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;
}
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;
}
您可以使用函数指定数组的每个值:
<?php
$array = ["Ripe Mango"=>"Yellow", "Strawberry"=>"Red", "Lemon"=>"Yellow"];
$result = [];
array_walk($array, function ($value, $key) use (&$result) {
$result[$value][] = $key;
});
print_r($result);
我知道怎么做的唯一方法就是循环
<!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>
您可以使用foreach遍历数组,并将颜色添加到一个新数组中。最简单的方法是使用foreach遍历输入数组,然后迭代生成所需的输出数组。如果不使用该函数,该方法可以正常工作!谢谢但是如果我把它放在一个函数上,为什么它不工作呢?谢谢!我想我在传递数组时遇到了问题,但可能不是p@JanArielSanJose很高兴帮助您::
<?php
$array = ["Ripe Mango"=>"Yellow", "Strawberry"=>"Red", "Lemon"=>"Yellow"];
$result = [];
array_walk($array, function ($value, $key) use (&$result) {
$result[$value][] = $key;
});
print_r($result);
<!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>