문법에 틀린부분이 있을까요?
본문
제가 다른 언어를 쓰다 php를 하게되었는데요... 다음 코드의 문법에 이상이 있을까요?
우선 상황을 설명드리자면...
$memberInfo <- 전화번호, 주소, 소개 등이 이 변수에 다 들어가있어서요..
특정 문자(")로 잘라 배열로 넣고,
배열을 돌면서 전화번호(te2)를 추출하려는데요...계속 빈값이 나와서요..
문법에 이상이 있을까요?;;
값의 형태는 다음과 같습니다.
O:8:"stdClass":3:{s:15:"xe_validator_id";s:20:"modules/member/tpl/1";s:2:"te";a:3:{i:0;s:0:"";i:1;s:0:"";i:2;s:0:"";}s:3:"te2";a:3:{i:0;s:3:"010";i:1;s:4:"1234";i:2;s:4:"5678";}}
==>
function memberTel($memberInfo){
$memberInfos =explode('"' , $memberInfo); //잘라서 배열에 넣음
$memberTel = ""; //전화번호
$k = array_search('te2', $memberInfos); //전화번호부분의 배열 인덱스값을 넣고..
foreach ($memberInfos as $key) {
if($key == $k+2 || $key == $k+4 || $key == $k+6){
//전화번호가 있을 것으로 추측되는 위치에 값을 넣어서 출력
$memberTel = $memberTel + $value;
}
}
return $memberTel;
}
답변 2
https://www.php.net/manual/en/function.unserialize
$memberStr = 'O:8:"stdClass":3:{s:15:"xe_validator_id";s:20:"modules/member/tpl/1";s:2:"te";a:3:{i:0;s:0:"";i:1;s:0:"";i:2;s:0:"";}s:3:"te2";a:3:{i:0;s:3:"010";i:1;s:4:"1234";i:2;s:4:"5678";}}';
$memberInfo = unserialize($memberStr);
print('<pre>');
print_r($memberInfo);
print('</pre>');
/*
stdClass Object
(
[xe_validator_id] => modules/member/tpl/1
[te] => Array
(
[0] =>
[1] =>
[2] =>
)
[te2] => Array
(
[0] => 010
[1] => 1234
[2] => 5678
)
)
*/
소스가 제대로작동안하긴하네요.
코드에 문제가있었습니다.
foreach ($memberInfos as $key) { 를
foreach ($memberInfos as $key => $value) { 로 바꿔주세요