为了账号安全,请及时绑定邮箱和手机立即绑定

PHP爆炸没有返回数组

PHP爆炸没有返回数组

PHP
桃花长相依 2021-11-05 10:49:55
我有一些包含,字符的字符串,我需要将它们分解成数组。例如有两种情况    $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 ?!    }感谢您的回答,告诉我为什么会发生这种情况。
查看完整描述

2 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

测试代码:


$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/>";}

输出 :


Jack

Rose

John

Jack

这就是我测试您的代码的方式,它似乎工作正常。如果它仍然不适合您,请尝试在字符串末尾添加一个逗号。尽管它会在数组末尾添加一个空数组条目,因此我建议在 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 entry


foreach($names as $name){

    //Do your thing here

}


查看完整回答
反对 回复 2021-11-05
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

不需要使用 str_replace 方法。explode(',', $str)将有助于从给出字符串形成数组,因为它甚至以数组形式存储单个值的数据。
$str = 'Jack, Rose, John'; $names = explode(',', $str); var_dump($names);

查看完整回答
反对 回复 2021-11-05
  • 2 回答
  • 0 关注
  • 129 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信