複数の文字列値と数値を持つphp varがありますが、
$string = 'Simple 12, Complex 16';
これを配列に分解しますが、この文字列を配列の下のように分解する必要があります。
Array(
[0] => Array(
[Simple] => 12,
[Complex] => 16
)
)
PHPでこれを行う完璧な方法は何ですか?
<?php
$string = 'Simple 12, Complex 16';
$values=explode(",",$string);
$result=array();
foreach($values as $value)
{
$value=trim($value);
list($type,$count)=explode(" ",$value);
$result[0][$type]=$count;
}
print_r($result);
?>
出力
Array
(
[0] => Array
(
[Simple] => 12
[Complex] => 16
)
)
簡単な方法は次のとおりです。
preg_match_all('/(\w+)\s*(\d+)/', $str, $matches);
$result = array_combine($matches[1], $matches[2]);
このように出たい場合は、このようにしてください。
<?PHP
$string = 'Simple 12, Complex 16';
$my_arr1 = explode(',',$string);
foreach ($my_arr1 as $value) {
$value=trim($value);
$my_arr2 = explode(' ',$value);
$final_array[$my_arr2[0]]=$my_arr2[1];
}
print_r($final_array);
出力
Array
(
[Simple] => 12
[Complex] => 16
)
<?php
preg_match_all("/[A-Za-z]+/","Simple 12, Complex 16",$keys);
preg_match_all("/[0-9]{2}/","Simple 12, Complex 16",$vals);
$a = array_combine($keys[0],$vals[0]);
print_r($a);
やってみて
ユーザー「Ø Hanky Panky Ø」からの返信にエラーがあります。
ここ:
$result[0][$type]=$count;
正しくは:
$result[][$type]=$count;
preg_match_all('/(\w+)\s*(\d+)/', $string, $matc);
$output = array_combine($match[1], $match[2]);