如何限制数组中的数组

时间:2019-02-05 04:22:56

标签: php laravel-5.6

我想限制每个数组,我尝试使用此代码无法正常工作,请在高级中将此感谢。 我的密码:

    $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,

上面的值是因为字符串未达到15个字符。

请帮助我解决这个问题,谢谢。

2 个答案:

答案 0 :(得分:2)

每次使用下一个名称时,都需要重设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>';
    }

答案 1 :(得分:0)

您可以使用$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>';