6

我有一个看起来像这样的变量:

$var = "Dropdown\n
  Value 1\n
  Value 2\n
  Value 3\n";

如您所见,它基本上是由换行符打破的值。

我想要做的是获取选项类型,在本例中为“下拉”并将其余值存储在另一个字符串中。

所以

list($OptionType, $OptionValues) = explode("\n", $var);

上面的代码是我尝试过的,但这就是字符串的结果:

$OptionType = 'Dropdown'; //Good
$OptionValues = 'Value 1';  // Only got the first value

我希望 $OptionValues 是这样的: $OptionValues = "Value 1\nValue 2\nValue 3\n";

我该怎么做这样的事情?

选项类型始终是字符串的第一部分,后面是选项值,每个选项值由换行符分隔。

它以这种方式组织,因为它来自用户输入,它使用户更容易处理。

4

4 回答 4

20

您需要使用 的第三个参数来explode()设置限制。

$var = "Dropdown\n
  Value 1\n
  Value 2\n
  Value 3\n";

list( $foo, $bar ) = explode( "\n", $var, 2 );

echo $bar;
于 2012-05-05T23:19:34.170 回答
1
$values_array = explode("\n", $var);
$OptionType = $values_array[0];
unset($values_array[0]);
$OptionValues = implode("\n", $values_array);
于 2012-05-05T23:18:49.677 回答
1

您可以使用 array_shift 自动弹出第一个爆炸的元素,然后加入剩余的元素。

<?
$var = "Dropdown\nValue 1\nValue 2\nValue 3\n";

$exploded = explode("\n", $var);
$OptionType = array_shift($exploded);
$OptionValues = join("\n", $exploded);

echo $OptionType . "\n";
print_r($OptionValues);
于 2012-05-05T23:21:09.993 回答
1

你不需要数组爆炸。

这是适合您的代码:

$var = "Dropdown\nValue 1\nValue 2\nValue 3\n";
$the_first_element = substr($var,0,strpos($var,"\n"));
$what_i_want = substr($var,strpos($var,"\n")+1);

//returns :
//"Dropdown"
//"Value1\nValue2\nValue3\n"
于 2012-05-06T00:52:11.267 回答