2010-08-13 4 views
2

데이터베이스 항목에 관리자의 일부 설정을 추가하려고합니다.배열을 배열로 다시 문자열로 저장 하시겠습니까?

저장했습니다.

array('aviva'=>'aviva','teacher'=>'teacher'); 

필드에 'fullPara'로 표시되지만 배열로 다시 가져올 수 없습니까? 그냥 문자열로 뱉어 내고 평가를 시도했지만 여기에서 어디로 가야할지 모르십니까?

echo $userTypes['fullPara']; // spits out array('aviva'=>'aviva','teacher'=>'teacher'); 

어떤 안내 환영합니다!

최고의

는 단

답변

9

당신은 serialize()unserialize() 기능 PHP의 이벤트로보고 싶다. 여기

은 예입니다

$array = array('1', '3', '4'); 
$s_array = serialize($array); 
// insert that into the db. 


// later on when fetching. 
$array = unserialize($array_from_db); 
print_r($array); // viola 

편집 나는이 사용하지 않는 것이 좋습니다

그러나 여기 당신이 평가 후면 사용하여 배열로 변환 할 방법입니다

eval("\$array = " . $data_from_Db); 
print_r($array); 

할까요 네가 뭘했는지 알아봐.

+0

아마도 배열을 저장하는 가장 확실한 방법 일 것입니다. 인간이 읽을 수있는 것은 아니기 때문에 PHP가 편집을 처리하게하십시오 (예 : phpMyAdmin으로 무언가를 "수정"하지 마십시오). – cHao

+0

안녕하세요 premiso - 문제는 배열 문자열이 이미 array ('aviva'=> 'aviva', 'teacher'=> 'teacher')로 존재합니다. 기본적으로 우리는 그들을 phpmyadmin, seqlpro 등등에 추가 할 것입니다. – v3nt

+1

@daniel : Ewwww. 어레이가'eval'을 사용함에 따라 쉽게 검색 할 수있는 유일한 방법은 모든 종류의 쓰레기를 스스로 열어야합니다. – cHao

3

"array ('aviva'=> 'aviva', 'teacher'=> 'teacher'); 문자열을 이미 배열로 바꾸려면 ...

$str = "array('aviva'=>'aviva','teacher'=>'teacher');"; 
eval("\$foo = $str"); 
var_dump($foo); 

정말 최선의 방법은 아닙니다.

+0

환호성 새끼들 - 그게 효과가 있습니다. 왜 그게 최선의 방법이 아닌지 궁금해? 그 모든 배열은 이미 DB에 문자열로 존재하므로 삽입 할 때 색인을 생성하는 관리자를 구성하는 데 약간의 시간이 걸립니다. – v3nt

+0

문자열이 이미 문자열로 존재하므로 실제로는 그다지 좋은 방법이 아닙니다. 그러나 서버에서 eval을 실행하는 것은 엄청난 보안 위험입니다. 응용 프로그램에서 데이터베이스에 대한 쓰기 액세스를 허용하지 않으면 제한적이라고 생각합니다. 장래에 데이터베이스에 배열을 저장하려면 premiso에서 설명한 직렬화를 사용하는 것이 좋습니다. –

+0

위대한 - 감사합니다 모두! – v3nt

관련 문제