오류

문자열 배열을 배열화 하겠다고 이렇게 짠 php 스크립터:

$str_age = '"han"=>27, "park"=>30, "hwang"=>34';
$result = explode(",", $str_age);

echo $result["han"] // error

뭔가 작동할 것 같은데 $result["han"]을 출력하면 error가 뜬다.
당연하지만 이유는 제대로 키와 값이 분리가 되지 않았기 때문이다.
위의 스크립트를 출력하면 "Peter=>32 그대로 들어가 있다.
이것은 배열이 아니잖아???

해결

2단계를 거쳐야한다.

  1. ,를 구분기호로 각 원소로 분리한 후 =>로 분리해서 이름과 나이를 분리하자
  2. 이름의 큰 따옴표를 제거하자
$result = [];
$str_age = '"han"=>27, "park"=>30, "hwang"=>34';
foreach(explode(', ', $str_age) as $couple){
    list($name, $age) = explode('=>', $couple);
    $name = trim($name, '"');
    $result[$name] = $age;
}

echo $result["han"]; // 27

구문분석

explode(', ', $str_age) as $couple:
$str_age에 담긴 문자열을 ,을 구분으로 나누고 그 반환 값을 $couple에 담고 루프를 돌린다.

list($name, $age) = explode('=>', $couple);:
$couple에 담긴 문자열에서 =>를 구분문자로 정하고 각 데이터를 $name과 $age로 담는다.

$name = trim($name, '"'):
$name에 담긴 값에서 "부분을 제거한다.

$result[$name] = $age:
$result라는 배열에 담는다.