首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >靠近$limit变量的strlen上的php组数组

靠近$limit变量的strlen上的php组数组
EN

Stack Overflow用户
提问于 2022-09-09 12:55:42
回答 1查看 47关注 0票数 0

需要帮助。我希望根据与$limit关闭的strlen对数组进行分组,并按总长度进行排序。

我的数组看起来如下:

代码语言:javascript
复制
(
    [0] => Isofix
    [1] => Parkinghelp
    [2] => Rainsensor
    [3] => Led light
    [4] => Hill Start Assist
    [5] => Dynamic brake light
    [6] => Cornering Brake Control
)

例如,我想总结一下接近29的最佳选项。

所以理想情况下,这是我想要找到的组合

侧偏制动控制(23)+等距(6)= 29

动态制动灯(19)+雨水传感器(10)= 29

山启动辅助(17)+ Parkinghelp(11) = 28

Led灯= 90

我的最后一个数组应该如下所示:

代码语言:javascript
复制
Array
(
    [0] => Cornering Brake * Control Isofix
    [1] => Dynamic brake light * Rainsensor
    [2] => Hill Start Assist * Parkinghelp
    [3] => Led light
)


// code  

$limit = 29;

$arr = array('Isofix', 'Parkinghelp', 'Rainsensor', 'Led light', 'Hill Start Assist', 'Dynamic brake light', 'Cornering Brake Control');

foreach ($arr as $key => $value) {
  echo $value . ' - ' . strlen($value);
  echo "\n";
}

// this is what i have so far. But it's not checking every possibility

$limit = 29;
$result9009 = array(''); 
$cur_key = 0;
foreach ($arr as $word) {
  if (strlen($result9009[$cur_key]) + strlen($word) <= $limit) {
        $result9009[$cur_key] .= ' * ' . $word;
     } else {
        $result9009[] = $word;
        $cur_key++;
     }
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-09 14:38:57

希望这有帮助,您应该添加最后一个案例,并尝试提高复杂性。

代码语言:javascript
复制
<?php
function cmp($a, $b)
{
    return $a["key"] >= $b["key"];
}

$limit = 29;

$arr = array('Isofix', 'Parkinghelp', 'Rainsensor', 'Led light', 'Hill Start Assist', 'Dynamic brake light', 'Cornering Brake Control');
$result=[];
$arrayToCheckin=[];
for ($i=0; $i < count($arr); $i++) {
    for ($j=$i+1; $j < count($arr); $j++) {
        $key = abs(strlen($arr[$i]) + strlen($arr[$j]) - $limit);
            $arrayToCheckin[] = [
                'key'=>$key,
                'elem1'=>$arr[$i],
                'elem2'=>$arr[$j]
                ];
    }
}
usort($arrayToCheckin, "cmp");
$control = [];
foreach ($arrayToCheckin as $val) {
    if(!in_array($val['elem1'], $control) && !in_array($val['elem2'], $control)) {
        $result[] =  $val['elem1'].'*'.$val['elem2'];   
        $control[] = $val['elem1'];
        $control[] = $val['elem2'];
    }
}
var_export($result);

输出

代码语言:javascript
复制
array (
  0 => 'Isofix*Cornering Brake Control',
  1 => 'Rainsensor*Dynamic brake light',
  2 => 'Parkinghelp*Hill Start Assist',
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73662508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档