2016-12-07 16 views
-1

レッツは、私は、文字列を持っていると言う個別の値以上(破)

type[] => fruit,vegetable 

item[] => apple,orange,carrot 

誰もがこの上で私を助けることができます?

+0

昏睡状態で爆発するoop、コロンで爆発する。あなたの望む出力がちょっと奇妙に見える –

答えて

1

ここでは、文字列を2つの配列に解析するコードを示します。

<?php 
$type=array(); 
$item=array(); 
$a="fruit: apple, fruit: orange, vegetable: carrot,"; 
foreach (explode(',',trim($a,',')) as $csv){ 
    list($k,$v)=explode(':',$csv); 
    $k=trim($k); 
    $v=trim($v); 
    if($k && $v){ 
     if(!in_array($k,$type)) $type[]=$k; 
     if(!in_array($v,$item)) $item[]=$v; 
    } 
} 
print_r($type); 
print_r($item); 

あなたは$のタイプは、あなたの質問にあるようなCSV単一の文字列になりたい場合は、あなたがこのように結合を使用することができます

$string = "fruit: apple, fruit: orange, vegetable: carrot,"; 
preg_match_all("/([a-zA-Z0-9]*): ([a-zA-Z0-9]*),/U", $string, $output_array); 
print_r($output_array); 

print join(',',$type); 
+0

答えをありがとう – Alex

1

このコードは、あなたが簡単にアクセスもできarrayに入れます、see DEMO

<?php 
$string = "fruit: apple,fruit: orange,vegetable: carrot"; 
$output = array(array()); 
foreach(explode(",", $string) as $item){ 
    $parts = explode(": ",trim($item)); 
    if(array_key_exists($parts[0], $output)){ 
     array_push($output[$parts[0]], $parts[1]); 
    }else{ 
     $output[$parts[0]] = array($parts[1]); 
    } 
} 
?> 

それは、後のゲインそのために、結果としてあなたに

<?php 
$output = array(
    "fruit" => array(
     "apple", 
     "orange" 
     ), 
    "vegetable" => array(
     "carrot" 
     ) 
    ); 
?> 

をこのようなarrayを与えますあなたは次のようになります:

$output["fruit"][0]; 

これにより、りんごの結果が得られます。

+0

これはコメントであり、答えではありません。しかし、私はクエリに同意します –

+0

はい、私は今参照してください。私は実際に彼の質問の最初の部分に注意を払っていません。私はこの答えを編集します。 – Nytrix

+0

あなたは文字列を変換していません。あなたが配列で始めると簡単です –

0

はこのような何かを試してみてください

Array 
(
    [0] => Array 
     (
      [0] => fruit: apple, 
      [1] => fruit: orange, 
      [2] => vegetable: carrot, 
     ) 

    [1] => Array 
     (
      [0] => fruit 
      [1] => fruit 
      [2] => vegetable 
     ) 

    [2] => Array 
     (
      [0] => apple 
      [1] => orange 
      [2] => carrot 
     ) 

) 
関連する問題