PHP爆炸没有返回数组

时间:2019-07-30 08:43:28

标签: php

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

    $str = 'Jack, Rose, John';

    $str = 'Jack';

当我在每种情况下使用此代码

    $formatted = str_replace(' ', '', $str); // Remove spaces
    $names = explode(',',$formatted); // Split strings to array

在第一种情况下,一切正常。三个名字(杰克,罗斯,约翰)分成了我可以使用的数组。

    $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 个答案:

答案 0 :(得分:1)

测试代码:

img_dir = "MyFolder" # Folder name containing image files 
data_path = os.path.join(img_dir,'*g')
files = glob.glob(data_path)
data = []
for f1 in files:
    img = cv2.imread(f1)
    x=data.append(img)

输出:

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

这就是我测试您的代码的方式,它似乎可以正常工作。 如果仍然无法解决问题,请尝试在字符串末尾添加逗号。 尽管它将在数组末尾添加一个空数组条目,所以我建议您在foreach之前使用array_pop。

这是一个例子:

Jack
Rose
John
Jack

答案 1 :(得分:0)

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