PHP-字符串到(多)数组-和循环

PHP-字符串到(多)数组-和循环,php,arrays,Php,Arrays,对不起,我不知道如何解决这个问题,实际上我也找不到合适的词来搜索解决方案: 我有一个字符串如下 picture1.jpg, name1, role1; picture2.jpg, name2, role2; picture3.jpg, name2, role2; 有没有办法让它循环得到这样的东西 loop start <img src='$image' />$name as $role loop ends 试试这个: $str = 'picture1.jpg, name1

对不起,我不知道如何解决这个问题,实际上我也找不到合适的词来搜索解决方案:

我有一个字符串如下

picture1.jpg, name1, role1; picture2.jpg, name2, role2; picture3.jpg, name2, role2;
有没有办法让它循环得到这样的东西

loop start
<img src='$image' />$name as $role
loop ends
试试这个:

    $str = 'picture1.jpg, name1, role1; picture2.jpg, name2, role2; picture3.jpg, name2, role2;';
    $items = explode(';', $str);
    foreach ($items as $row) {
        $arr = explode(',', $row);
        echo sprintf('<img src="%s"/> %s as %s', trim($arr[0]),trim($arr[1]),trim($arr[2]));
    }

一个完整的解决方案将是:


请尝试以下简短版本:

$str = 'picture1.jpg, name1, role1; picture2.jpg, name2, role2; picture3.jpg, name2, role2;';

function picture_name_role ($val) {
    $pnr = array_filter(explode(',', $val));
    list($picture, $name, $role) = $pnr;
    return '<img src="' . trim($picture) . '"/>' . trim($name) . ' as ' . trim($role);
}

$f = array_map('picture_name_role', array_filter(explode(';', $str)));

var_dump($f);

谢谢Pablo,我有一个语法错误问题,与这行有关$values=数组\映射函数$value{return trim$value;},$value;由于PHP4>=4.0.6,PHP5是您的版本,所以可以使用array_map函数?该功能经过测试,可以正常工作XD!奇怪的是,PHP版本是5.2.42。我得到的错误消息是Parse error:syntax error,意外的T_函数,期望“…..”问题是匿名函数,它不适用于PHP<5.3,但由于某些原因,它返回第7个空行。我添加了一个$count++并在第6行停止输出,每个字符串有6行。感谢Bartek:找到原因,是因为最后一行中断\n;
$str = 'picture1.jpg, name1, role1; picture2.jpg, name2, role2; picture3.jpg, name2, role2;';

function picture_name_role ($val) {
    $pnr = array_filter(explode(',', $val));
    list($picture, $name, $role) = $pnr;
    return '<img src="' . trim($picture) . '"/>' . trim($name) . ' as ' . trim($role);
}

$f = array_map('picture_name_role', array_filter(explode(';', $str)));

var_dump($f);