2015-11-24 56 views
1

这是我的数组:PHP数组爆炸一个char

array:4 [ 
    0 => "Family Deluxe for 4 Person x 1" 
    1 => "Studio Deluxe for 2 Person x 1" 
    2 => "Additional Adult x 2" 
    3 => "Additional Children x 2" 
] 

当我进入一个foreach循环去除x并获得数,我碰到下面的输出结果:

array:4 [ 
    0 => array:1 [ 
    "Family Delu" => "e for 4 Person " 
    ] 
    1 => array:1 [ 
    "Studio Delu" => "e for 2 Person " 
    ] 
    2 => array:1 [ 
    " Additional Adult " => " 2" 
    ] 
    3 => array:1 [ 
    " Additional Children" => " 2" 
    ] 
] 

问题是,字符串Deluxe中存在x字符,因此循环会在哪里启动explode()混淆。下面是我的代码foreach

foreach($a as $s) { 
      list($size, $quantity) = explode('x', $s); 
      $data[] = array($size => $quantity); 
      $sumVariant += $quantity; 
     } 

我怎样才能得到explode()识别x与两侧的空间?谢谢!!

+1

在它周围放置空格:'explode('x',$ s)' – Barmar

回答

1

explode()的分隔符参数不一定是单个字符,它可以是任何字符串。因此,使用x,并用空格作为分隔符。

list($size, $quantity) = explode(' x ', $s); 
+0

谢谢你,这么简单的事情。 – d3bug3r

1

explode(" x ", $s);应该诀窍。或者你可以得到explode数组的最后一项。