PHP使用2种类型的分隔符爆炸数组

时间:2014-03-03 09:29:48

标签: php arrays explode

我有这个选项数组:

string(111) "colors:black;white;transparent;pink;"    

我怎么能爆炸它所以我得到一个标签第一个分隔符:其余的数组作为选项?到目前为止我有这个:

$options= explode(";",$rows[0]);
$htm= '<ul class="product_opts">'.$lang['available_options'].'';
foreach ($options as $value) { 
        $row=mysql_fetch_row($result);
            $htm.='<li style="text-align:left;font-weight:normal;">'.$value.'</li>';
            }
        $htm.= '</ul>';
        }
    echo $htm;    

但它也将标签作为选项返回..

5 个答案:

答案 0 :(得分:2)

$attributes="colors:black;white;transparent;pink;";

list($attribute, $values) = array_map(
    function($value) {
        return array_filter(explode(';', $value));
    },
    explode(':', $attributes)
);
var_dump($attribute);
var_dump($values);

答案 1 :(得分:1)

  1. :分解字符串。第一个令牌将是您的标签,第二个令牌是您的选项。
  2. ;分解第二个令牌,您可以选择数组。

答案 2 :(得分:1)

尝试

$str = "colors:black;white;transparent;pink;";
$arr = explode(";",$str);
$key = explode(":",$arr[0]);
$arr[0] = $key[1];
unset($arr[sizeof($arr)-1]);

请参阅演示here

答案 3 :(得分:1)

$str = "colors:black;white;transparent;pink;";

list($label, $optionsStr) = explode(":", $str);

$optionsStr = rtrim($optionsStr, ";");
$options = explode(";", $optionsStr);

echo "<pre>";
print_r($label);

print_r($options);

答案 4 :(得分:0)

使用split这样做

$options= split("[;|:]",$rows[0]);