PHP爆炸没有返回数组

我有一些包含,字符的字符串,我需要将它们分解成数组。例如有两种情况


    $str = 'Jack, Rose, John';

或者


    $str = 'Jack';

当我将此代码用于每种情况时


    $formatted = str_replace(' ', '', $str); // Remove spaces

    $names = explode(',',$formatted); // Split strings to array

在第一种情况下,一切顺利。三个名字(Jack、Rose、John)被拆分成我可以使用的数组。


    $str = 'Jack, Rose, John';

    $formatted = str_replace(' ', '', $str);

    $names = explode(',',$formatted);

    foreach($names AS $name)

    {

            // Get user from database using $name.

            // Everything works just fine.

    }

但在第二种情况下,我没有得到一个数组。当我使用 foreach 时,它只为每个循环返回空字符串。


    $str = 'Jack';

    $formatted = str_replace(' ', '', $str);

    $names = explode(',',$formatted);

    foreach($names AS $name)

    {

            // Get user from database using $name.

            // Return error because $name empty ?!

    }

感谢您的回答,告诉我为什么会发生这种情况。


桃花长相依
浏览 130回答 2
2回答

慕雪6442864

测试代码:$str1 = 'Jack, Rose, John';$str2 = 'Jack';$formatted1 = str_replace(' ', '', $str1);$names1 = explode(',', $formatted1);$formatted2 = str_replace(' ', '', $str2);$names2 = explode(',', $formatted2);foreach($names1 as $name){echo $name . "<br/>";}foreach($names2 as $name){echo $name . "<br/>";}输出 :JackRoseJohnJack这就是我测试您的代码的方式,它似乎工作正常。如果它仍然不适合您,请尝试在字符串末尾添加一个逗号。尽管它会在数组末尾添加一个空数组条目,因此我建议在 foreach 之前使用 array_pop。这是一个例子:$str = 'Jack, Rose, John';$str .= ','; //Adding a comma$formatted = str_replace(' ', '', $str);$names = explode(',', $formatted);array_pop($names); //Popping the last empty entryforeach($names as $name){&nbsp; &nbsp; //Do your thing here}

翻翻过去那场雪

不需要使用 str_replace 方法。explode(',', $str)将有助于从给出字符串形成数组,因为它甚至以数组形式存储单个值的数据。$str = 'Jack, Rose, John'; $names = explode(',', $str); var_dump($names);
打开App,查看更多内容
随时随地看视频慕课网APP