如何限制数组中的数组

How to limit array in array

我想将每个数组限制为不超过 15 个字符的字符串。我试过这段代码,但它不起作用:

$a = [
        "name1" => ['Dewa','Aditya','Pratama'],
        "name2" => ['Brian','Dzikri','Ramadhan'],
];

$result_shortdes = "";
foreach ($a as $values) {
    foreach ($values as $value) {
        if(strlen($result_shortdes) + strlen($value) <= 15)
        {
            $result_shortdes .= "$value,";
        }
    }
}

echo '<pre>';
print_r($result_shortdes);
echo '<pre>';

我的预期输出是这样的:

1. Dewa,Aditya,
2. Brian,

每次转到下一个名称时,都需要重新设置 result_shortdes 以再次计算名称长度,将变量放在第一个循环中,如下所示:

foreach ($a as $values) {
    $result_shortdes = "";
    foreach ($values as $value) {
        if(strlen($result_shortdes) + strlen($value) <= 15)
        {
            $result_shortdes .= "$value,";
        }
    }
    echo '<pre>';
    print_r($result_shortdes);
    echo '<pre>';
}

您可以使用 $result_shortdes 作为长度,使用 $result 来存储结果,如下所示

$a = [
                "name1" => ['Dewa','Aditya','Pratama'],
                "name2" => ['Brian','Dzikri','Ramadhan'],
        ];

        $result_shortdes = "";
        $result = [];
        foreach ($a as $values) {
            $result_shortdes = "";
            foreach ($values as $value) {
                if(strlen($result_shortdes) + strlen($value) <= 15)
                {
                    $result_shortdes .= "$value,";
                }else{
                   $result[] = $result_shortdes;
                   break;
               }
            }
        }

        echo '<pre>';
        print_r($result);
        echo '<pre>';