0

事後操作からの配列があります

$country = $_POST['country']; //The number of countries differ according to the user selection
$c = count($country);

出力: `

Array ( [0] => England,69,93 [1] => Australia,79,84 [2] => Greece,89,73 [3] => Germany,59,73 )`

次のような多次元配列に分割する必要があります。

> Array ( [0] => Array ( [0] => England [1] => 69 [2] => 93)
>         [1] => Array ( [0] => Australia [1] => 79 [2] => 84)                      
>         [2] => Array ( [0] => Greece [1] => 89 [2] => 73)
>         [3] => Array ( [0] => Germany [1] => 59 [2] => 73))

PHPでこれを行うにはどうすればよいですか

私は試した

$r = array();

foreach($country as &$r){
  $r = explode(",", $r);
  //for($i = 0; $i < count($country); $i++){
    //for($j = 0; $j < count($r); $j++){
        //$array[$i][$j] = $r;
    //}
  //}
}
echo '<br>';
print_r($r);

forループも機能しなかったため、コメントアウトしましたが、必要に応じてオプションとして残しました。

印刷機能は、配列の 1 つだけを印刷するようになりました。私が何を間違えたのか正確にはわかりません。どんな助けでも大歓迎です。ありがとうございました

4

3 に答える 3

1

あなたはもうすぐそこにいました:

$r = array();

foreach($country as $country_item){
  $r[] = explode(",", $country_item);
}
echo '<br>';
print_r($r);

上記は機能するはずです。

あなたにとってさらに良いことは何ですか(あなたの国が各配列で一意である場合):

$r = array();

foreach($country as $country_item){
  $temp_array = explode(",", $country_item);
  $r[$temp_array[0]] = array($temp_array[1], $temp_array[2]); 
}
echo '<br>';
print_r($r);

これにより、次のような出力が得られます。

> Array ( [England] => Array ( [0] => 69 [1] => 93)
>         [Australia] => Array ( [0] => 79 [1] => 84)                      
>         [Greece] => Array ( [0] => 89 [1] => 73)
>         [Germany] => Array ( [0] => 59 [1] => 73))

したがって、これは、次のように国の数値にアクセスできることを意味します。

$r[$country_name];
于 2013-03-23T11:51:28.173 に答える
0

これを試して

for($i=0;$i<count($country);$i++)
 {
      $country1[$i] = explode(",", $country[$i]);
 }
于 2013-03-23T11:53:24.413 に答える
0

$rメイン配列をループからの$rでオーバーライドしています-これが解決策です-常に変数を分割します:

$output = array();
foreach($country as $c){
  $parts = explode(',',$c);
  $output[] = $parts; 
}

print_r($output);
于 2013-03-23T11:53:43.460 に答える