我有一些包含,
字符的字符串,我需要将它们分解为数组。例如有两种情况
$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 ?!
}
感谢您的回答,告诉我为什么会发生这种情况。
答案 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);