-1

この形式のmysqlからの文字列があります

1.name.2.name,3.name.8.name

私はこれを持っています

$arr=split(",",$str);$count=count($arr);

これは2つの配列になりますが、箇条書きで書きたい

for ($i=0;$i<$count;$i++){
echo $arr[$i];
// when $i=0 here must be 1 name 2 name and when $i=1 3 name 8 name
}

これはまだ正しいですが、ループ内で からの値を書き込みたい$arr[$i]ので、それらをドットで分割する必要があります。出来ますか?

4

3 に答える 3

3

ループは必要ありません

$string = "1.name.2.name,3.name.8.name";
$array = explode(",", $string);
var_dump($array);

出力

array (size=2)
  0 => string '1.name.2.name' (length=13)
  1 => string '3.name.8.name' (length=13)

もっと壊したいなら

$array = array_map(function($v){return explode(".", $v); },$array);
var_dump($array);

出力

array (size=2)
  0 => 
    array (size=4)
      0 => string '1' (length=1)
      1 => string 'name' (length=4)
      2 => string '2' (length=1)
      3 => string 'name' (length=4)
  1 => 
    array (size=4)
      0 => string '3' (length=1)
      1 => string 'name' (length=4)
      2 => string '8' (length=1)
      3 => string 'name' (length=4)
于 2012-11-26T17:33:01.007 に答える
0

正規表現を使用した代替方法:

$string = "1.name.2.name,3.name.8.name";

preg_match_all('|(\d+)\.([^.,]+)[,.]?|', $string, $matches);
$matches = array_combine($matches[1], $matches[2]);

print_r($matches);

出力:

Array
(
    [1] => name
    [2] => name
    [3] => name
    [8] => name
)
于 2012-11-26T17:53:58.210 に答える
0

を使用explode()して分割し、,str_replace()削除します.

$string = "1.name.2.name,3.name.8.name";
$arr = explode(",", $string);

for ($i=0;$i<count($arr);$i++){
echo str_replace("."," ",$arr[$i]);}
于 2012-11-26T17:39:45.057 に答える