2012-12-31 3 views
0

PHP를 조금 사용해 왔지만 기본 작업 만 수행하고 지식 기반의 일부를 구축하는 동안 막혔습니다.배열 내의 PHP 배열

기사를 만들 때 스크린 샷을 업로드 할 수 있습니다. 기사를 저장할 때까지 준비 영역에 저장해야하며 사용자 세션에 정보가 저장되어 있어야합니다.

... 
$new_ss = array(); 
$new_ss['display_name'] = $ss_name; 
$new_ss['server_path'] = "../uploads/"; /* outside of doc root */ 
$new_ss['server_path'] .= hash_file('md5', $ss_tmp_name) . "_" . $ss_name; 

if (@move_uploaded_file($ss_tmp_name, $new_ss['server_path'])) 
{ 
    $_SESSION['article']['screenshots'] .= $new_ss; 
    ... 
그런

편집 페이지 내에서 사용자에게 업로드를 표시하려고 :

if (is_array($_SESSION['article']['screenshots']) && count($_SESSION['article']['screenshots']) > 0) 
{ 
    echo "<table border=\"1\">\n"; 
    foreach ($_SESSION['article']['screenshots'] as $ss) 
    { 
     ... display table of uploaded images ... 

의 문제점은, PHP는 $ _SESSION 표시되지이다 [ '기사 POST 업로드에서

'] ['screenshots ']를 배열로 사용합니다. 왜 그런지는 알 수 없습니다.

여기에 대한 답을 다음과 후 : PHP foreach() with arrays within arrays? 나는 빨리 다음과 같은 일을 시도 :
function print_array($key, $item) { 
    echo "$key -> $item\n"; 
} 

... 
{ 
    $_SESSION['article']['screenshots'] .= $new_ss; 
    array_walk_recurisve($_SESSION['article']['screenshots'], 'print_array'); 
    ... 

그러나 나는 오류 "매개 변수 (1) 배열, 주어진 문자열이 될 것으로 기대".

'error_log ($ _ SESSION ['article '] ['screenshots ']);' 그것은 단지 많은 이미지가 업로드되기 때문에 "Array"를 출력하고, print_r은 그 자체로 '1'을 출력합니다.

누군가가 약간의 빛을 발산 할 수 있습니까?

답변

1

그럼 나는이 줄에 배열해야 키 중 어느 것이 정말 모르겠어요 : 당신은 그것을 연결하여 그것을 문자열을 만들고있어

$_SESSION['article']['screenshots'] .= $new_ss; 

. 배열로 추가하려면 다음을 수행해야합니다.

$_SESSION['article']['screenshots'][] = $new_ss; 
+0

아, 매우 간단합니다! 'appending to'의 사고 방식에 갇혀 있었고 그 운영자는 ... 지금 감사합니다! 한번 허용됩니다! – ZXcvbnM