Dewa Aditya
Dewa Aditya

Reputation: 79

How to limit array in array

I want to limit every array to strings with 15 characters or less. I have tried this code, but it does not work:

$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>';

My expected output is like this:

1. Dewa,Aditya,
2. Brian,

Upvotes: 1

Views: 65

Answers (2)

user1334621
user1334621

Reputation:

Every time you go to the next name, you need to reset result_shortdes to count the name length again, place the variable inside the first loop like this:

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>';
}

Upvotes: 2

suresh bambhaniya
suresh bambhaniya

Reputation: 1687

you can use $result_shortdes for length and $result to store result like below

$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>';

Upvotes: 0

Related Questions