我一直在使用 PHP,但只做基本任务,在尝试构建知识库的一部分时遇到了困难。
创建文章时,您可以上传屏幕截图 - 这些屏幕截图需要存储在暂存区域中,直到文章被保存,并且我已将他们的信息保存到用户会话中。
在 POST 上传中:
...
$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['article']['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”。
有人可以阐明一下吗?