Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用字母范围按值对数组进行分组_Php_Arrays_Codeigniter_Grouping - Fatal编程技术网

Php 如何使用字母范围按值对数组进行分组

Php 如何使用字母范围按值对数组进行分组,php,arrays,codeigniter,grouping,Php,Arrays,Codeigniter,Grouping,如何根据字母范围将具有相同值的数组分组, 我有一个这样的数组 $arr = array('HIGH','HIGH','HIGH','HIGH','LOW','LOW','LOW' ,'MEDIUM','MEDIUM'); $alpabet = range('a','z'); foreach ($arr as $key => $val){ echo $alpabet[$key].' - '.$val."</br>"; } 如何得到这样的结果

如何根据字母范围将具有相同值的数组分组, 我有一个这样的数组

$arr = array('HIGH','HIGH','HIGH','HIGH','LOW','LOW','LOW'
             ,'MEDIUM','MEDIUM');
$alpabet = range('a','z');

foreach ($arr as $key => $val){
    echo $alpabet[$key].' - '.$val."</br>";
}
如何得到这样的结果

a - HIGH
a - HIGH
a - HIGH
a - HIGH
b - LOW
b - LOW
b - LOW
c - MEDIUM
c - MEDIUM

您可以使用以下代码执行此操作:

$prev_value = ''; // you need it to check for new values
$alphabet_range_index = -1; // every new value you increment this index

foreach ($arr as $key => $val) {
    if ($val != $prev_value) {
        // every new value you increment the alphabet index
        $alphabet_range_index++;
        $prev_value = $val;
    }
    echo $alpabet[$alphabet_range_index].' - '.$val."</br>";
}
$prev_值=“”;//您需要它来检查新值
$alphabet\u range\u index=-1;//增加此索引的每个新值
foreach($arr作为$key=>$val){
如果($val!=$prev_值){
//每增加一个新值,就会增加字母表索引
$alphabet_range_index++;
$prev_值=$val;
}
echo$alpabet[$alphabet\u range\u index].-'.$val.“
”; }
您可以使用以下代码:

$prev_value = ''; // you need it to check for new values
$alphabet_range_index = -1; // every new value you increment this index

foreach ($arr as $key => $val) {
    if ($val != $prev_value) {
        // every new value you increment the alphabet index
        $alphabet_range_index++;
        $prev_value = $val;
    }
    echo $alpabet[$alphabet_range_index].' - '.$val."</br>";
}
$prev_值=“”;//您需要它来检查新值
$alphabet\u range\u index=-1;//增加此索引的每个新值
foreach($arr作为$key=>$val){
如果($val!=$prev_值){
//每增加一个新值,就会增加字母表索引
$alphabet_range_index++;
$prev_值=$val;
}
echo$alpabet[$alphabet\u range\u index].-'.$val.“
”; }
您可以使用此神奇循环:

$tmp = [];
$i = -1;
foreach ($arr as $val){
    $tmp[$val] = empty($tmp[$val]) ? $alpabet[++$i] : $tmp[$val];
    echo $tmp[$val].' - '.$val.PHP_EOL;  
}

产出:

a - HIGH
a - HIGH
a - HIGH
a - HIGH
b - LOW
b - LOW
b - LOW
c - MEDIUM
c - MEDIUM

您可以使用此神奇循环:

$tmp = [];
$i = -1;
foreach ($arr as $val){
    $tmp[$val] = empty($tmp[$val]) ? $alpabet[++$i] : $tmp[$val];
    echo $tmp[$val].' - '.$val.PHP_EOL;  
}

产出:

a - HIGH
a - HIGH
a - HIGH
a - HIGH
b - LOW
b - LOW
b - LOW
c - MEDIUM
c - MEDIUM

一种可能性是创建从
$arr
$alphabet
中的键的值映射

$map = array_flip(array_values(array_unique($arr)));
echo $alpabet[$map[$val]].' - '.$val."</br>";
(这将为您提供
$map=['HIGH'=>0,'LOW'=>1,'MEDIUM'=>2]

然后,您可以在循环中使用它将
$arr
中的值与
$alphabet
中的值进行匹配

$map = array_flip(array_values(array_unique($arr)));
echo $alpabet[$map[$val]].' - '.$val."</br>";
这将为您提供
$map=['HIGH'=>'a','LOW'=>'b','MEDIUM'=>'c']
,您可以在循环中使用它,如

echo $map[$val].' - '.$val."</br>";
echo$map[$val].-'.$val.“
”;


这个想法对起始阵列和目标做了一些假设,问题在这方面不是太具体,因此可能无法满足您的需要。尽管如此,它在某些情况下仍然是有效的。

一种可能性是创建一个从
$arr
$alphabet
中键的值映射

$arr = array('HIGH','HIGH','HIGH','HIGH','LOW','LOW','LOW'
             ,'MEDIUM','MEDIUM');
$alpabet = range('a','z');

foreach ($arr as $key => $val){
    echo $alpabet[$key].' - '.$val."</br>";
}
$map = array_flip(array_values(array_unique($arr)));
echo $alpabet[$map[$val]].' - '.$val."</br>";
(这将为您提供
$map=['HIGH'=>0,'LOW'=>1,'MEDIUM'=>2]

然后,您可以在循环中使用它将
$arr
中的值与
$alphabet
中的值进行匹配

$map = array_flip(array_values(array_unique($arr)));
echo $alpabet[$map[$val]].' - '.$val."</br>";
这将为您提供
$map=['HIGH'=>'a','LOW'=>'b','MEDIUM'=>'c']
,您可以在循环中使用它,如

echo $map[$val].' - '.$val."</br>";
echo$map[$val].-'.$val.“
”;


这个想法对起始阵列和目标做了一些假设,问题在这方面不是太具体,因此可能无法满足您的需要。但是,它在某些情况下仍然有效。

o.o如何将这些字母与值关联?o.o如何将这些字母与值关联?
$arr = array('HIGH','HIGH','HIGH','HIGH','LOW','LOW','LOW'
             ,'MEDIUM','MEDIUM');
$alpabet = range('a','z');

foreach ($arr as $key => $val){
    echo $alpabet[$key].' - '.$val."</br>";
}